Frontal assaults with everything on the gate end up in a fight to the death with everything the enemy has, and when they return to the square they will, of course, not rout which results in massive casualties on my part. Assaulting the square from different streets at once only seems to improve the situation slightly.
Using towers and ladders only weakens the forces assaulting the gate and for some reason wall defenders seem to fight much much better than those on the ground and completely chop up my forces who are attacking the walls. I only end up a few units short for the final battle in the square and at the most succeed in routing a couple enemy units to the square where they will fight to the death. I usually win these battles but they are very very costly in manpower... especially compared to the auto-calc.
I did a test and tried one battle myself while restoring and auto-calcing it. The compared casualties on my part are 53 in the auto calc vs 343 in the battle!! I don't see how that battle could be won losing only 53 men even if I could use some other tactics against them. Also of note the AI in the auto-calc had around 200 men "remaining" (they die anyway cause its a siege, but the point is in the battle they all retreat to the square and die or are captured on the field so none should remain) ... preposterous.
I know maybe this should go in rants and raves but I'm posting it here in hopes that someone has some advice on how to even get close to doing as well as the auto-calc as the attacker in siege battles. I'm sure that the fault probably lies with me and bad tactics. I'm good in the open field but for some reason these battles don't work out very well.

Killed my general and routed my whole army.