Another point in favour of databases is simplicity of client-server communication and data models.
Many objects in WoW (not too sure about spells, but most likely them too) work such that the client asks the server for the related DB rows when it sees an object for the first time. So instead of sending code across the wire, which would be a bad idea for many reasons, you instead send structured data that the client interprets.
Of course, you could just bake the spell code into the client at compile-time, but then dataminers will take it apart on day 0. WoW datamining mostly works such that you play the game normally and see what data the server gives you.
Only UUIDs, names, descriptions and scaling are baked into the client-code. But if you wanted to extract this data there isn’t much I could do against it.
Interesting! Sakurai would say keep your params out of the code, so that you can easily tweak all params in one spot when balancing things. But maybe having all params in code is reasonable to handle when you’re a solo dev.