Convolution with an impulse response does not give the same result as the frequency response
Explicitly making the imaginary part of your FFT coefficients 0 will change your magnitude response. 

It is very clear if you consider this:
$$
X_k = a_k + jb_k\\
|X_k| = \sqrt{a_k^2 + b_k^2}
$$
Now, you're explicitly setting new coefficients to be $X'_k = a_k$, and hence $|X'_k| = |a_k|$.
Taking the IFFT of your new frequency response will obviously not be the same as the impulse response you expect.

If instead you made $X'_k = |X_k|$ and then performed an IFFT, you would get your expected filter taps. This is because your magnitude response is enforced to be the same and your phase is enforced to be zero.