Maybe cages should have certain you-must-be-this-big-to-escape limits determined by the material parameters?
So things like wolves and crundles would be securely contained in wood, a goblin or an elf could be contained in cages of useless cheap metal like lead or tin, a troll or a bull would need a bronze/iron one, and something like a hydra or a dragon would only be possible to contain in adamantine.
I mean, it's logical. Containing a bronze colossus in a wooden cage is pretty absurd as notions go; its material is harder than wood, so even if the cage is made from whole tree trunks, the colossus could get out simply by crushing the wood into splinters one tiny chunk at a time.
Making metal cages necessary for breaking sieges would combine the best of both worlds: cage traps would still be a viable method of defense against small invasions, and capturing invaders for science and entertainment would still be possible to do in a young-ish fortress, but you'd be hard-pressed to churn out enough metal cages to withstand every siege your fort will ever experience.
Hence, while cage traps will definitely remain a valuable weapon of last resort, you won't be able to put literally hundreds of them on the map like we usually do. You'll need to supplement them with weapon traps or a military.
Of course, to remain viable, they'll need to have some kind of a setting that will determine which material they'll take. Maybe something like the military's uniform settings: a profile of cage materials that the trap will accept, with an option to install some profile quickly for any given cage.
To make things slightly less Fun, the escape check could be made only once, a set time after a creature's capture: six months, for instance.
Enough time to dispose of the invader, shuffle them into a fitting cage, or have them carried into your stockpile and forget all about them (Fun!), but not enough to construct separate anti-building-destroyer prison cells for every troll involved.