Suppose we find ourselves in an inertial frame in which the body rotates and moves in a straight line. Its angular momentum vector lies on this straight line. But the smallest angle between them makes the axis of rotation start to rotate around the momentum vector. This means that both sides of the body every instant move on both sides (called nappes) of a double cone has with an apex that coincides with the CM of the body. The CM always lies on the straight line of moving.
When the angular momentum starts to rotate around the body's momentum vector, the double cone is continuously varying (which is why I used the term "instant" in the previous alinea) in width: from small to maximum (when the body's rotation vector is perpendicular to the momentum vector, and the cone become a plane for an instant) going on to small again. But why the body starts to rotate around the momentum vector in the same direction as the body's rotation vector?
Now if the instantaneous rotation of the body on the cone has the same direction as the rotation of the body around the intermediate axis, the body rotates around the momentum vector and centripetal forces are present on both sides of the body. While the centripetal force on one side of the body is accelerating the angular momentum (which can most easily be seen for thee wingnut) of the body around the intermediate axis the one on the other side is decelerating it. The one that decelerates the angular momentum though wins, so the angular momentum around the intermediate axis decreases in accordance with the increase in angular momentum due to the rotation on the cone.
At a certain point (when the body's rotation vector instantaneously rotates in a plane associated with the double cone), the angular momentum around the intermediate axis is zero, after which the rotation around the cone makes the body rotate again around its intermediate axis, in the opposite as when it started (the associated rotation vector, and thus angular momentum has reversed). The rotation around the "flipped" double cone diminishes. So the angular momentum around the intermediate axis increases again (as already said, its direction is reversed, because when the body has flipped 180 degrees, the angular momentum is the same as at the start), while the angular momentum of the rotation on the cone decreases, going to zero after the full 180 degrees flip.
The flipping of the body is caused by centripetal forces directed towards its CM. The flipping begins slowly, accelerates to a maximum when it has rotated 90 degrees, after which it's decelerated to 180 degrees.
If the intermediate axis of rotation would start to rotate in the contrary direction, this would accelerate the rotation of the body around the intermediate axis, so the total angular momentum would increase, which can't be because it should be conserved (without external torques acting on the body, which is the case here).
I'm not sure if one can say that conservation of momentum is the cause. I mean, this doesn't explain the mechanism. But for sure, the mechanism implies the conservation of angular momentum.