As for the ARexx script: if possible (and if you don't trust other tools) make it loop forever and move window to screen mouse coords and remove delay.
This doesn't make any difference. As you say, MoveWindow is asynchron. It essentially builds up a message, and pools it up in the input queue of the intuition input handler. The input handler runs once per VBI, thus any attempt to run the window movement more often just pools up more messages, but does not create more work.
The problem here is, however, the interaction of the calling task through messages with the input handler. Thus, if you call MoveWindow from *within* the input handler, this might have undesireable side effects.