It is interesting that applying topup yourself gives a different result than when you do SDC with topup with FMRIPREP. It would be interesting that you look at the temporary files in the working directory of FMRIPREP to see if you can guess why the topup results from FMRIPREP are different.
I read that the new version of FMRIPREP in 2023 will look into improving SDC within FMRIPREP that was reported at giving strange results in a certain number of cases.
Maybe the new version will work better for your dataset?