It sounds to me like there’s a variable somewhere that is not initialised - just a guess here, but have you set the restitution to 0?
If you have defined but not initialised restitution, then maybe when it’s working it’s just fortunate that it is initialised to a low number.
I think restitution of 0 means no bounce, 1 means perfect bounce - so an uninitialised value outside this range could be giving you your issue?
The only other thing I can think of would be tunnelling - your player travels so fast that it partly tunnels into the ground - and the physics engine compensates by throwing it up out of the ground.
It should only tunnel at high speed - so does this still happen if your player drops from a small height?
It may also be (thinking as I type, here) that you have many joints in your body - this can cause issues similar to how you describe if a ‘pointy’ physics object in your sprite hits a joint in your ground body.
This can be tested by making both the ground and your sprite a simple rectangle - I remember there being a post on this on iforce2d.net - but that site is blocked at work so I can’t find it for you right now.