The only thing that needs calibrating on the Garmin is the current elevation at a specific point. That won’t affect total ascent/descent at all, only the absolute altitude.
Unless it’s changed, all the Garmin does is sum up all the +/- changes from 1 data point to the next. Any “smoothing” or interpretation is down to how you set up the logging… Auto? Every N seconds?
And then when you stick it in Strava / Endomondo / Mapmyride / etc. they then do their own interpretation of something that’s already probably been reduced according to an algorithm in the Garmin.
In short… total ascent/descent is unreliable.
When people say “i find my iphone accurate” or “strava accurate” etc… what are they actually using as a reference? Manual check of an OS map? or another app that interprets and smooths data?
a value half or double that reported via another app/website is pretty normal IME.