S-expressions are perhaps partly responsible as well. They don't suffer the same brittleness as regular programming languages (is there a word for non-s-expression languages like c/python/etc?).
New macros can very well be prototyped and battle-hardened in external libraries before being added to core.