I think emacs has a few simple advantages:
1. It’s based on a high quality extensible programming language which supports writing extensible programs. This makes implementing new features, new language features, or just modifying/fixing existing ones possible and usually easy.
2. The primitives/idioms (hooks,buffers,buffer-local-variables,markers,interactive functions,advice,keymaps,text properties) tended to be good choices that allow separate modes/programs within the editor to interact well with one another. They also allow easy extension/modification/fixing of the system. I think modules (although useful and maybe necessary) do not typically fit into this category.
3. Emacs realises the idea of a programming environment built into a user interface (ie one where it is easy to interact with the user in a way that is not stdin/out). I feel like this is often touted as an advantage of html/JavaScript but in emacs one already has all the other useful programs/libraries to base one’s own creations on. On the web one always has to start from scratch. On the other hand elisp does not have any GL/canvas interface (although you can write an svg (or worse) and display it).
4. The documentation tends to be pretty good and when the documentation fails
Emacs certainly has disadvantages too. One is setting it up, another is that it often breaks and it can be hard to get used to emacs. I personally am not bothered by these because I already know enough to not mind/struggle much fixing things. Another issue is ide features but I don’t really use languages with separate ides (unless you count languages where emacs is the ide) so I don’t mind this. Indeed I mostly don’t use any of the ide attempt features like projectile or the static code parsing/analysis