- Causes less hooks.
- 'Scope-transparent' macros can make variables for you.
- People from other languages are more used to it.(Circumstancial, this one.)
Macros such as iterate and loop have some qualities of scopes.(Can you do flets macrolets with them?) Basically, with the *let's the variables/function/macros are contained inside the macro, while with scopes, they 'flow out' into the nearest scope. It is pretty close to equivalent, you only have to remember which macros are scope and which 'spills' their scope. It is best if at the base, there is only one macro that 'spills' scope, named something like transparent-progn.