It's because the physics engine relies on TimeDelta, and TimeDelta has inaccuracies. In two executions of your game, the sequence of values for TimeDelta will usually vary somewhat. This has knock-on effects, and like the fluttering of a butterfly's wings causing a hurricane, the physics engine will sometimes play out a different sequence of events.
I can't make the physics engine framerate dependent (ie. force it to play out identically each time) - that would cause more problems than it solves - as the article on TimeDelta
However, I don't think it sucks for Physics games. It does introduce an element of randomness - but in a game like this physics game
- it is nearly impossible for the player to set up an identical game twice in a row - so you'd never notice. You should still be able to design physics puzzle levels that are easily possible - a realistic setup will result in the ball rolling to the target every time, for example. It's only if the whole thing hangs by a thread that any element of randomness might prevent, for example, the ball rolling down the slope to the destination.