"Doing just one thing and doing it well" -- which is better at this, Unix programs or Emacs functions?
At least Unix programs don't suffer from dynamic scope. (Unless you use bash to glue them, of course.)
https://www.gnu.org/software/emacs/emacs-paper.html#SEC18
All my own Elisp code uses lexical scoping by default and I don't trust myself enough to use dynamic parameters liberally in my code. But I don't think it's entirely unreasonable to have the ability to dynamically override internals.