Implementation of Fourier Domain Denoising with Hard Threshold
Thresholding in the Fourier domain is an archaic method sometimes called spectral subtraction, used for background noise removal in speech. Bad results in image processing can be due to several factors:


Misinterpretation: you say "The Fourier denoising hard threshold method just uses threshold value to keep high frequency coefficients". Not quite. You keep "high amplitude coefficients", no matter low or high frequency.
Test data: the Shepp-Logan model is known to be quite specific. Bad results on it do not imply bad results on real data, yet:
Transform choice: Fourier is very good for close-to-stationnary data. Standard images with smooth parts inside contours are not well represented in the Fourier domain, at least not concentrated enough for acurate data compaction and reconstruction with few (high) coeffcients. Derivatives, or multiscale directional derivatives like wavelets can help better.
Implementation: Fourier implementation via FFT suffers boundary artifacts
coefficients, not talking about the 1D implementation you seem to use (prefer fft2 here)
Coefficient selection: hard and scalar thresholding typically yields more important visual artifacts than "smoother" thresholding and vector or group thresholding. 
Formulation: you can generally get better results when you do not use a "parameter-tuned algorithm", but prefer a variational formulation based on your priors, including noise statistics.


So you have plenty of room to improve your results. Two references for multivariate image denoising with automated threshold (for Gaussian noise):


A nonlinear Stein based estimator for multichannel image denoising, 2008
Wavelet transform for the denoising of multivariate images, 2010