Artists. Graphics-technical. Modelers/3D artists. They all have to collaborate with other departments. We're not talking about a 1-man project. There's literally hundred of different texture formats out there, hundreds of different model formats and revisions to formats, and a million and one ways of pulling it all together. If you want new texture or model formats to work, you need the engine coders to work with you to get it working. You've got thousands of things to consider, and with WoW, system compatibility is a big one. You've got 2 platforms (Windows and OS X), legacy compatibility, and you've got to make sure that it all works and fits with the ideal of the game.
A few weeks ago, there was a picture on the front page that showed the 4 different layers needed to make a texture 'work'. You've got your AO layer, your heightmap, your normal map, and your RGB channels layer. Add to that a specular map, perhaps a bumpmap. They don't just create themselves.
Then this IS NOT about graphics, it's about the combat system. I've talked about this a lot in the past, but the inherent design behind an MMORPG is one where there's a lot of data sources and a lot of clients, and everything needs to be kept in sync, which means a lot of data being sent many times per second, and having to be parsed at the client. If your system is choking to death, then it's the fault of your system, either because you're running a fuckton or out of date addons, or because you're trying to play on a 25W toaster.
WoW's graphics engine is completely fine. It is not at fault. What does cause problems is the combat system and the sheer amount of data. People still think FPS is completely affected by what they can see, it's not. In fact, what you can see is often not the culprit of FPS problems - it's the data and the processing of that data by the CPU, and the object handling that cause FPS drops.
Take a look at something like Supreme Commander (RTS). Up to around 250*8 units (2000), the game runs fine. As you increase the number of units, the performance drop drastically. When you get to about 400*8 (3200), your FPS will have dropped by half if not more. This isn't because of the visual, it's because you've added another 1200 sources of data that each need to handle queued commands as well as the automatic micromanagment (e.g. pathfinding, engage on sight, etc). When you get to 600*8 (4800), your FPS will be close to single digits. In fact, if you make it to this point, the game will probably be closing in on the 2GB RAM 'cap' -- after that point, the game would outright crash unless you'd set it to be LAA. Either way, the performance drops to crazy low numbers, and it often takes several minutes for units to respond to commands. It's absolutely NOT the number of visual units there, it's the data that's associated with them that's causing the problems. These performance issues occurred even in single-player skirmishes against AI. Against other players, you're only handling your own units, and the visual representation of the other units is just that, visual. The data for those units isn't calculated by your system, it's merely synced over the network between 2-7 other players.
The same applies for WoW, except instead of units dealing set amounts of damage, you've got characters dealing variable amounts of damage and healing to various targets, as well as environmental effects that might cause damage. Realistically, you've got 50 channels of data, or 2x25 arrays (read*25 and write*25). You could simply update each value with 'last damage dealt' (negative for damage dealt, positive for healing done) and 'last damage received' (negative for damage received, positive for healing received), but that doesn't tell you the source of the damage/healing, nor any details about it. What you're actually looking at are lots of events like this;
Code:
8/3 23:04:48.812 SPELL_HEAL,0x010000000520AAF6,"Yedia",0x518,0x0,0x01000000051B0B10,"Mistweavez",0x518,0x0,117640,"Spinning Crane Kick",0x8,0x01000000051B0B10,256443,18526,9263,0,345000,963,963,0,nil
That's 1 single in-game combat event, and it basically provides all information about that specific event. There's 22 pieces of data, 23 if you include timestamp data. In this specific combat log sample, there's 15 of those (each for a different player), that shows how much healing was done by that Spinning Crane Kick, and all 15 of those occurred at exactly the same moment in time (i.e. 23:04:48.812 exactly). That's 330 pieces of data excluding the timestamp and all that has to be parsed by the in-game addon API. This combat log is from last month. In a 25-player raid situation, you're looking at 25 sources of data
minimum for each event, and AoE healing and AoE damage increases this number even further.
TLDR: Visual IS NOT the cause of FPS problems, data and object processing is.