I’ve not yet determined what causes this but it appears to happen somewhere in the movement component code.
With this solved a new issue comes up though which appears to be the true root of the problem is that occasionally pawns colliding with other pawns end up on top of one another. I decided to override APawn::CanBeBaseForCharacter and allow certain pawns to always be able to SetBase on each other but there is also CanCharacterStepUpOn which can be used to control this. I was having a similar issue and after some debugging with watching the velocity I determined in my case it is happening due to the function UCharacterMovementComponent::JumpOff which is called when the base (ground) changes to an actor the pawn can’t SetBase on (which is the case for pawns basing other pawns.)