I guess the argument goes: if your macro is smart enough to realise it needs to perform an UNDO, it can use the same logic to avoid making the change in the first place.
If you need to (say) make some changes to JCL with the macro and then submit it, you can avoid saving the changes by issuing a CANCEL as the last step in the macro. From Edit and Edit Macros
CANCEL is especially useful if you have changed the wrong data, or if the changes themselves are incorrect. See the DATA_CHANGED, AUTOSAVE, and END commands for more information about saving data.