DSLs are awesome for what they are. DSLs let you ingest/load untrusted user code directly
and have strong isolation barrier, allowing for very powerful user customizations with "native" implementations of certain features /functions.
Anything from programmable authorization to custom views becomes safely and relatively easily available. Say what you want about ESB pattern, but you can implement ESB transformers in a custom DSL.
Obviously not every piece of software needs these features, but when it does DSLs are very handy.