While I understand why mIRCscript behaves this way, it does not make it any less annoying. Although using character 160 is a workable alternative in many cases, it isn't always appropriate and has some odd side-effects.
For example, if you display a line with every space character replaced with character 160, mIRC becomes unable to find clickable hyperlinks in the text, which is frustrating. If your script is intended to work on incoming IRC text, the moment the text is used in the script the extra spaces are truncated, which means lines such as /set %safetext $replace($1-, $chr(32), $chr(160)) have no real effect.
In short, it means it is not possible to perform any scripting on incoming text/data while still preserving whitespace. I admit to not having ever worked with binvars but I would expect them to fail as soon as you passed them to any text manipulation routines/commands.
I don't know how this could be avoided without breaking everyone's existing scripts, but I think it is worth considering.
It is also worth mentioning that this behaviour is only exhibited if the text passes through a script. If there are no scripts handling incoming or outgoing text then double spaces are displayed and sent correctly.