sleep pauses the waiting when the game is paused, where uiSleep does not.
When the simulation is interrupted, time freezes, but not uiTime. Also time at the start of in init.sqf is often reported as 0, even if the mission has already started.