Well, actually, anything with native in front of it should not have its name changed... the fact that the optimizer changes those names is a bug =/=.
There are other useful natives besides UnitAlive.
Furthermore, the optimizer is incompatible with tools like EMS.
Shortening names of regular function calls and variables are kind of important as it helps maps run quite a bit faster.
Another problem arises from shortening variable names, namely the TriggerRegisterVariableEvent native.
At the moment, shortening names on the optimizer is unsafe to use.
There are certainly ways to fix most of these problems (looking for strings that are equal to function names and seeing if they are ever used in an ExecuteFunc as well as looking for strings that are equal to variable names and seeing if they are ever used in TriggerRegisterVariableEvent as well as seeing if something is a function or a native).
There is no good way to fix EMS w/o making the name changing portion of the optimizer a part of vjass and having a flag that makes it so a function is never shortened.