Test this endlessly before you trust it
In[1]:= xprule = {Xpee[a_] + Xpee[b_] | Xpee[a_] - Xpee[b_] /; b == -a :> ZipIt[b]};
{Xpee[2] + Xpee[-2], Xpee[-2] + Xpee[2], Xpee[-x] + Xpee[x],
Xpee[2] - Xpee[-2], Xpee[-2] - Xpee[2], Xpee[-x] - Xpee[x],
Xpee[-x] + Xpee[y], Xpee[-x] - Xpee[y]} /. xprule
Out[2]= {ZipIt[2], ZipIt[2], ZipIt[x],
ZipIt[-2], ZipIt[2], ZipIt[x],
Xpee[-x] + Xpee[y], Xpee[-x] - Xpee[y]}