Why doesn't this complex multiplication in the frequency domain produce my expected phase shift?
If you want a phase-shifted strictly-real result, then you have to make sure the data you feed to the IFFT is conjugate symmetric.  So make sure to reflect the complex conjugate of any phase changes you make.  e.g. Make the upper or negative half of your IFFT input vector mirror the complex conjugate of the bottom or positive half of the input vector.  

Added: (Also, "mirror" usually means the array index goes in the opposite direction.)