macros override functions everywhere. Try doing something like this:
(let obj (table)
(obj 1))
Since obj is a newly-initialized table, we expect (obj 1) to return nil - except (obj ...) is a macro, which overrides the intended definition.
Basically, your greatest risk is that someone will define a new macro in Arc, which happens to shadow a variable (regardless of locality) you are already using in existing code. If that variable is a variable for a collection, you are s.c.r.e.w.e.d.
Maybe we should require that macro names have some defining feature?