There are ways to use Hold to defer evaluation, but I have not encountered many cases where that is preferable to just defering the entire expression with SetDelayed.
In[1]:= tuplesPlus[x_, n_, y_] = Tuples[x, n] + y
During evaluation of In[1]:= Tuples::normal: Nonatomic expression expected at position 1 in Tuples[x,n]. >>
Out[1]= y + Tuples[x, n]
In[2]:= tuplesHeld[x_, n_, y_] = Hold[Tuples[x, n]] + y
Out[2]= y + Hold[Tuples[x, n]]
In[3]:= tuplesHeld[{a, b, c}, 2, d] // ReleaseHold
Out[3]= {{a + d, a + d}, {a + d, b + d}, {a + d, c + d}, {b + d,
a + d}, {b + d, b + d}, {b + d, c + d}, {c + d, a + d}, {c + d,
b + d}, {c + d, c + d}}