Macros provide the vital feature of encapsulating command sequences into a new command. As a scripting language, ARexx carries that a step further, allowing the script author to do things that can't be encapsulated as a command sequence.
While a macro can cause the application to deal with files in whatever manner it allows, a script can open an external file, parse it for the pertinent parts, and issue commands to the application based on the contents of the file.
Unless the application specifically allows for it, a macro won't be able to queery the user for information. An ARexx script can always do so (via RexxArpLib), even if the application in question provided no such facility.
As a scripting language, ARexx makes available a full range of programming features - conditionals, looping, and program variables.
See everything for details.
While there shouldn't be anything that the user can't do, a scripting language may provide features that aren't usefull to the user at the keyboard, but would be very difficult or time-consuming for the user to do by hand.
On to IPC facilities, back to macro facilities, or up to what is ARexx.
Mike W. Meyer