Sorry, bit of a jumble on the quotes here, picked out things that I saw from all the replies.
Here's a radical idea, how about you make the sieges, wait for it, actually siege you. Enemies just charging inside is not a fucking siege. Sure you can produce food inside but you could tie attrition to medicine instead, only available topside. If you stockpile massive quantities of that, well, you deserve to be able to outlast a siege. That's how it was done back in the day. That's what a siege is. Besides, losing access to caravans for years would be annoying enough to make most players oust the siege in a timely manner. If they'd rather not, it's a perfectly valid strategy. Letting the goblins mull about would probably make them overhunt the local wildlife and loot everything you have left outside
True, but there's no real way of making that threatening as it is. I mean, food and water aren't hard to get in unlimited supply, even if you made food production take up 1000 times as much space, there's plenty of room for it underground over multiple levels. Water you could get from an aquifer, or even if you did have to get it from an outside source like a hole in the bottom of a river, it's still only vulnerable to those that can swim, and you can put bars along a long straight narrow path, so only vulnerable to swimming building destroyers, and put a ballista aiming down it to easily take care of any of those that exist.
Medicine will be problematic everywhere as it would be a surface plant. Preferably not even farmable
I don't see why that would be problematic, my first fortress even
Whipcaught had a large section outside that was walled off (was single high at first, added the fortified level later), it wasn't very hard and didn't really take long to do. When that ran out of trees in the area that I had (because I didn't have magma, and so I needed a lot of trees to make use of all the iron around), I created an attached area surrounded by channels that was even easier to make. It provided for quite a large number of trees and gatherable plants from herbalism, as well as above ground farms, but those only took up a fraction of the space. Now perhaps if the plants had to have access to light (no roof over them at all), and flying enemies, or ways to get up over multi-story walls were far more common or easy, it might be a slight limitation. You could always create an area sunk into a deep pit too though, so they would have to be able to deal with that as well.
Overhunting and loss of caravans are largely a minor inconvenience. You can usually make everything you need (which isn't much if you don't need to defend against sieges, even if you do, it's not a lot) without caravans. If there's something you really need from a caravan that gets destroyed outside, you can simply dig a hole beneath it (up staircases allow you to channel the ground above you), and drop it down into a pit, and collect it. As long as they can't climb down you're safe. Immigrants might die off, but you can make tunnels to the edges and seal them off the same way your fortress is, let some of them in that way, and then seal it off again, by any one of the listed methods. If you're really concerned about things, you can do it in an airlock fashion, if for some reason you can't close/seal off the outer lock in time and it's breached, you can keep the inner lock closed to prevent your fortress from being breached. Add in some water or magma to cleanse the chamber of any enemies left, and it can be reclaimed without fighting. If caravans or immigrants come at all during a siege that is, i haven't had one last long enough to try it out.
Morale penalties are currently very easy to counter with an engraved royal dining room and a waterfall, so they'd have to be very severe to have much of an effect. Even requiring a path to the outside can turn it from Dwarf Fortress to Dwarf Path of Traps. All of your defenses would only have to be concentrated at a single narrow path, if they have no other way in.
Ideally, I'd like to have an overarching AI involved in planning sieges, and where sieges groups go. Have some cost for digging through a tile, or laying a bridge, or smashing down a wall. Then, whenever a unit dies somewhere, add a big penalty for pathfinding trough that tile, or nearby tiles, so that after a siege gets absolutely destroyed marching through your killing hall of an entrance, the next time around, the pathfinding sees the huge cost of going down that hallway, and finds that something like building a bridge over the moat and attempting to knock down the wall becomes a more preferable path. So you can't just have a single killing hall of death, but instead, have to defend everywhere, and only put all those traps down the entrance because it's a vulnerable point, not as your entire defensive plan.
At the end of the day, a well designed underground fortress in a perfect locale is completely impenetrable no matter what you do. Get used to it
Just because it is doesn't mean it should be. And with all of these suggestions here, often a well designed underground fortress isn't even remotely close to being required, most of the things I've listed can be done in a single tile or two.
Eventually we might require ventilation
That might work well, but unless you can both fly or climb, and destroy grates and natrual or constructed walls, it would be fairly trivial to defend.
1: Make traps less intelligent - i.e. not able to perfectly tell the difference between friend and foe all the time.
Useful, but easy to get around, just checkerboard your entrance with traps, and then make pathfinding restricted over all the trap tiles. Your dwarves walk carefully down the corridor, staying to the black tiles, avoiding stepping on the white ones, whereas enemies march in and get pincushioned.
2: Make enemies more intelligent - i.e. once a trap is revealed to a group of enemies, they'll be able to circumvent it just like dwarfs do.
Definitely useful, you'd think that after seeing the goblin in front of them step on a section of floor and get splattered, that they would figure out not to do the same thing again.