Using FFT to demodulated a sine wave envelope with a cosine carrier
As you can see from your "Original FFT" plot, the real part of the FFT has even symmetry and the imaginary part has odd symmetry. When you zero out the lower sidebands, shift, and re-create the negative frequencies, you're forcing the FFT to have even symmetry (look at your "shifted FFT") plot. The signal you re-created corresponds to a cosine; this is what you get in the "Original vs Demodulated" plot, where the recovered signal is 90 degrees out of phase with the original.

The more common approach to demodulating in the frequency domain is as follows:


Zero out the negative frequencies. This is usually accomplished with the Hilbert transform. A signal $s(t)+j\hat s(t)$, where $\hat s(t)$ is the Hilbert transform of $s(t)$, is called an "analytic signal" and its spectrum only exists for positive frequencies.
Shift the spectrum back to baseband by multiplying the analytic signal with a complex exponential of frequency equal to $-f_c$.


The result of this process is the "complex envelope" which, despite its name, is real in the case of DSB-SC modulation of a single sinusoid.