Addition and subtraction of doubles is problematic, whenever their magnitude differs greatly. Say you have a precision of 10 decimal digits and want to
1234567890 + 0.05
Then the addition gets it wrong, because the mantissa cannot represent the additional 05. (Actually, with 64 IEEE doubles, the precision is more like 15 or 16 decimal digits)
From this we can conlude that the form (x+y)(x-y)
should do better, because in the case that we have a big x and a small (< 1) y, the magnitude difference of x² and y² will get even greater, making an accurate result in the subtraction even less probable.