I have noticed this same problem when switching from one computer to another (same mission on different computers will yeild different time). I have also observed this with editor previewed missions versus "pbo"ed missions.
The solution is to not use the <wait> command in delay scripts. Instead use the dedicated _time variable which yeilds the time in seconds the script has been running (it is local to the script), or <time> which yeilds the time in seconds that the mission has been running (global value). The <_time> and <time> values are based on the computer's internal clock, and are therefore minimally affected by other scripts running, lag, and whether the mission is compiled as a pbo or not. The <wait> or <~>, on the other hand, is effected by lag, multiple scripts running and "pbo"ed versus editor preview.
Here is how to use the <_time> in place of the <~>
Example script using the <wait>:
code line 1
code line 2
code line 3
~ 3 ; 3 second delay desired
code line 4
code line 5
exit
Example script using <_time>:
code line 1
code line 2
code line 3
_ref = _time
@ (_time - _ref) > 3 ; this will give a more precise 3 second delay.
code line 4
code line 5
exit
It adds more code to the script, but if you want delays to be more precise, it is the way to go.
I only use this method when timing is crucial, otherwise the ~ is more efficient.
Hope this helps.