The entire Stack-of-Doom process is a direct offshoot of ineffective implementation of bombardment engagement rules combined with the infinite knowledge that the AI has of every unit at every location on the map. (I know, i can here you saying "here he goes again").
If the bombardment engagements were not just a cheap modified recycle of the head to head slugfest, then the effectiveness of bombardment engagements would go way up with the experience level of the bombarding units combined with number of possible targets to get hit in a single square. If the bombardment effectiveness were tailored to the level of about 2 full sized armies or 10 to 15 units per tile, then we would see some much more realistic and strategically enjoyable campaigns.
Since one unit in the stack holds up the proverbial Red Umbrella of inifite bombardment protection, all the other units cluster about in defense and that is just exactly the opposite of what should occur (I think it was General Stillwell's orders at Pearl harbor that commanded all the airplanes to be clustered in the center of the runways so they could easily be defended.)
The infinite map knowledge of the AI also leads directly to the SoD prevailence.
If you or I were going to attack a civ, we would need at least a SoD surrounded by one or two S^3OD (Slightly Smaller Stacks of Doom) just to have some knowledge of the surrounding troop dispositions and potential counterattacks etc.) Since the AI knows where everything is all the time, then there is no requirement to fan out and find the critical engagement in the way the Napoleonic field armies were forced to maneuvre.
Another factor of this infinite map knowledge that forces us to keep our troops spread out, is the miraculous ability of the AIs to use satelite technology in the BCs to detect which one of our 42 cities is undefended so they can barf up a single swordsman from a galley and force us to redirect attcking forces to another task. You and I could never possibly choose the weakest 1 city out of all the other cities that an AI my have to offer even if we had gazillion samolians in the bank to investigate every individual city in every turn.
A further bug that forces the humans to use more of a fan out approach is the resource disconnect bug that still exists in captured territory and prevents access to some luxuries and railroad construction until the next turn after territory is captured. A single SoD could decimate a civ in just a turn or two if strategic thinking could be applied with stacks of combat workers and resource reconnection.
A final factor that I think drives me to using multiple stacks of attackers is the differences in mobility and attack factors. I usually have multiple stacks of artillery and infantry moving toward a couple of key objectives while a have a major attack force that leapfrogs across these strongpoints. Except when you reach the Mech Inf level, there is usually enough of a performance difference between the A-D-and-B units to force you to incorporate them all in your strategy. A stack of Musketmen and cannon, that gets joined by a stack of cavalry or cossacks at the moment before attack is very effective. I do keep counterattacking units with each defensive attack stack just for cleanup and counterattack purposes.