It seems these other two reports describe a very similar issue:
https://devforum.roblox.com/t/custom-limb-root-skeleton-animation-not-played/
https://devforum.roblox.com/t/animation-behaviour-inconsistent-in-studio-following-recent-update/
In my case, my models use AnimationController and Animator (not humanoid).
For some reason if I rename the PrimaryPart to “Root” the animation works otherwise it doesn’t.
Previously it worked with the name I had set (which was “HitBox”).