AFNI's blurring programs (3dmerge and 3dBlurInMask) just
add smoothness to datasets, so if there is some pre-existing smoothness, you will end up with more smoothness than you might anticipate. I imagine that SPM (etc.) does the same.
Assuming the spatially uniform Gaussian model for smoothness is correct (which is what 3dFWHMx estimates), then if the pre-existing smoothness were described by FWHM of 'P' and you then blurred with an additional FWHM of 'Q', you should get a final FWHM of sqrt(P*P+Q*Q). This pre-existing smoothness can arise from several different sources: the pulse sequence used for image acquisition (spiral vs. EPI, ramp-sampling), T2* decay during readout, and the image reconstruction algorithm itself (e.g., GE's default recon is usually somewhat smoother than Siemens').
Not knowing anything about how SPM smooths or estimates smoothness, I can't comment on the difference between their results and ours. 3dmerge usually uses a FIR filter for smoothing, but will switch to an FFT-based method for larger kernels. 3dBlurInMask (and 3dBlurToFWHM) use an iterative diffusive filter.