You have keyframes that exist between frames, and which don't make any sense for what you're trying to do:
You have keyframes at 629, 629.167, and 630. Before you change your keyframes, you will never see the keyframe at 629.167-- you'll skip right over it.
The nature of this keyframe is weird. This is a similar rotation, but it has a negative W while adjacent keyframes have a postive W. This leads to a fairly strong rotation that, normally, you never notice.
But when you grab the selected keyframes and move them, you no longer have a keyframe for frame 630-- it has to interpolate between this keyframe that it never showed before and the keyframes that used to be on 630. This is weird interpolation that you don't want.
These between-frame keyframes exist throughout the animation. When you move them in the timeline, or in the graph editor with nearest-frame snapping, Blender has to join them to adjacent keyframes in order to snap them. It appears to do so inconsistently-- but in Blender's defense, this isn't an operation that makes any sense, trying to snap multiple keyframes to a single frame. In any case, however Blender combines them, it leads to rotations that you didn't want, that you never saw previously, because they are some combination of the older keyframes with invisible in-betweens.
I don't know how you got these keyframes. They might have been made manually and then forgotten; maybe they were a byproduct of a weird import addon. You almost certainly don't want them. I'm afraid I don't know of a simple, scriptless way to select these markers (there's no checker deselect for keyframes) but some addon might exist somewhere.
Those keyframes are a bad idea for other reasons (for example, they'll screw up motion blur) but if you're okay with them, you just need to move some animation, then you can do so by turning off frame snapping in the graph editor and then moving by a fixed increment (like, g x 180 to move them 180 frames into the future) which will leave the on-frame keys on-frame and the off-frame, off-frame. You will still need to deal with the interpolation for the spaces now left empty, but you should be able to do that just by box selecting and deleting a single set of off-frame keys, as pictured below: