Well, as macros can be bound to packages, it could have sense to provide macros to e.g. speedup creation of dialogs (and put them to CtrlLib) etc... OTOH, you are right that the same thing can be as effectively done in TheIDE C++ code - but once again, that is less possible for third party package (if there will be any ever
As for global variables, I am afraid that they are not available between two macro runs. However, Esc provides global variables - see Esc reference- but they will exist just for single run.