Hi Daniel. In my experience, the effect is often small, but it varies from person to person. Usually, the standard deviation goes down slightly (look in the graph window) and a few obvious false positive voxels go away (though maybe not as much as I'd like), despite there being not much change in the power spectrum in the subjects I checked long ago. You can subtract the before and after datasets with 3dcalc to see what actually changed. I wonder if it's a matter of the Fourier series fit not working very well with noisy data, compared to GLM. I wasn't able to find an error in the math in 3dretroicor, but if someone else does I'd like to hear about it.
Anyways, here's the first thing to check: plot your pulse/resp data along with the pulse/resp phase output from 3dretroicor. The pulse/resp phase should reflect the cycles of the pulse/resp data. If not, you probably need to do some transformation of the pulse/resp data, and/or select an appropriate threshold for the pulse data (it defaults to 1). I usually use the scanner's pulse gating output so I don't need to deal with the pulse raw data. Also, note that the pulse/resp data file should span the same period of time as the EPI dataset (e.g. 300 seconds of EPI requires 300 seconds of pulse/resp data at whatever sampling rate you can manage).
Another thing I think would limit the effectiveness of 3dretroicor is the removal of slice times, e.g. after slice timing correction, usually to time 0 or TR/2. Consider that a 2-second TR would include around 2.5 heart beats, and I doubt any interpolation will make all the slices appear to come from the same cardiac phase (although it may not be so bad with respiration). I would run 3dretroicor very early in preprocessing, before slice timing correction.
If you can isolate a bug, let us know. I do still use 3dretroicor due to its convenience. I don't have time to improve 3dretroicor, but bugs are another matter. Also consider using RetroTS.m to generate physiological regressors, including additional regressors beyond those used in 3dretroicor. Or do both!