Waits do remove the certainty of the (standard) global values, all event responses "could" be overridden by the time that the wait ends.
That is why wait timers do remove the MUI aspect of the triggers... unless you use local variables
"Custom script - local unit udg_MyGlobalVariableIsSavedAfterWaits" will keep track of your nice global variable
Having waits is inaccurate yes, but do you need your effect to be perfectly accurate?
Using timers (replacement of waits) efficiently, forces you to use JASS instead of GUI, which could be a pain in the ass.
But back to the point. If you have something like a buff, or use it in a loop, the effect could make a big difference.
Waits add a random value between 0s and 0,2s to the wait (because of how they are made) and they would be a pain in the ass if you would have that value added to a loop that runs the whole game (ex. unit spawn, special effects, clocks, etc.)
They would be very inaccurate.
But if you use them in stuff like "The hero quickly dashes between 2 points dealing damage to everyone between it." has no need for perfect timing. You just use a 0.01 wait (0.15 ~ 0.16) and it would work fine.
So it all depends on what you want and how you have your data stored.
Next to that... what would you want to use waits for?