I found a bug in the Root Motion script on github https://gist.github.com/pharan/bc0e07647f6c066f432385518ac49149. The issue occurs when the root bone has a scale or shear timeline in an animation, but no translate timeline. Because scale and shear timelines inherit from translate timelines they can be mistakenly used instead. So you end up with an animation that should have no root motion moving suddenly when it's played as, in my case, the scale timeline specifies a scale of (-1, 1) which gets interpreted as root motion of a move left and up. Hopefully this is a sufficient explanation. To fix it I simply added an explicit check when getting the translate timeline that the timeline found isn't a child type.