City attacks are pretty bad design imo. It never made much sense to me thematically either -- sure, citizens will defend themselves, as Pineappledan said, but that's basically what units taking damage when slamming the city is. An ungarrisoned city shouldn't be able to hit back at the ranged and siege units on the hill. What are they supposed to do, send the old and infirm out with scythes to charge the enemy army? Gameplay wise it also makes more sense for a naked, undefended city to be more exposed. The power of the ranged attack is really hard to balance -- either it is too strong, and makes attacking a slog, or it is so weak its just a chore to plink the enemy every turn with. Units are significantly more interesting: xp, promotions, unique abilities from civs or wonders, terrain bonuses, the rock/paper/scissors of unit types. Even without the added bonus of removing bad code, ripping it out wholesale would improve the game imo.