Through in-game examination, it’s not a problem with the way the hats are positioned, but something going haywire with the way ROBLOX handles on-site thumbnail rendering, I suppose. I’m not sure.
Just found out that this is a side-effect of FileMesh’ offset property working properly. Over the years several hats have been published with an offset mesh for no apparent reason, and now that offset works… yeah.