Pm.sample_posterior_predictive worse than results from forward models


I’m having some issues understanding how to give posterior density distribution(pdd) from the sampled models.
Are samples from the trace equivalent to samples from pm.sample_posterior_predictive? - Questions - PyMC Discourse
Posterior Predictive Sampling – Works for Hierarchical Model? - General - PyMC Discourse
I’ve looked at several posts and found a similar questions on choosing the pdd given by pm.sample_posterior_predictive or by forward models using posterior distribution of input parameters. In my models, I found the second method match the observed data better, though the pm.sample_posterior_predictive have a narrower hdi.
In my models, the pm.Simulator and pm.sample_smc are used.
Thanks for sharing your suggestions.