The only real issue at all is writing a true 2D game like Mario. It is 2D in the sense there is no Z axis but it does have layers just like a desktop window environment or sheets of paper - or a Z index if you prefer.
That in itself isn’t really an issue at all. JME supports that workflow. The biggest issue is trying to use a 3D physics engine (bullet) in a 2D environment. It’s possible but it’s like trying to balance 2 sheets of paper on top of each other. You will end up fighting against it so often it becomes a genuine issue, not to mention the wasted calculations in the third dimension that the physics engine will do anyway.
If you want to make a genuine bonafide 2D game then use Box2D or whichever 2D physics engine you prefer. It will save you untold lengths of time and stress.
Other than that, runner games like subway surfer, temple run and all the others are genuine 3D games with limitations on how the “player” can move. So it’s only the controlling of the player that differs here. The rest is the same.
And depending on how complex your game is I would argue against even using a physics engine at all. On the surface it seems completely overkill to me. And if you’re developing for mobile you should definitely take that into account for what is essentially just intersect collision that doesn’t take a huge time to work out in itself.