Nate I did a little testing to see if I could recreate it in a new project, and I did manage to. Not all of these steps may be necessary, but I think copying/pasting part of an animation that already uses bezier curves is the catalyst.
- Make some random keys in a fresh animation. I found the issue happens with both rotation and translation keys, didn't test scaling or shearing.
- Set the keys to use bezier curves in the graph editor.
- Create a new animation and use some more random keys -- do not edit these in the graph editor yet.
- Copy all keys from the first animation, paste them at the end of the second animation.
- Now, select the first keys in the second animation and, in the graph editor, swap them from linear curves to bezier curves.
- When you play the animation in full, the keys you copied/pasted will snap as though not using bezier curves.
Hope this enables you to replicate the issue!