I set up my rotation exactly like this by following a GDQuest tutorial and had the exact same issue. It seems like something about our jumping process is fighting with our rotation statement. I'm guessing it's either our velocity.y variable being affected by the jump or it's our snap_vector being set to Vector3.ZERO. Not sure how or why those would affect it.
Anyways, replacing the if statement for the rotation with the below code seems to fix it:
if Vector2(velocity.z, velocity.x).length() > 0.2:
var look_direction = Vector2(velocity.z, velocity.x)
model.rotation.y = look_direction.angle()
Thanks to the Youtube commenters for figuring this one out. Still not sure why this works, or why it was a problem in the first place, but this solution seems to work out fine.