It shouldn't be difficult to gen caverns to fit with whatever cave in scheme is present. Just don't let them grow wider than a certain amount, or run the cave in script on the map after it is worldgenned to allow cave ins to occur before anything else happens.
By the way, here's how I would handle cave in rules. Collapse any tile more than x spaces from a wall. Say you have cave ins for any tile more than 2 tiles from a wall (it should be a larger number than this, this is for demonstration purposes).
Starting cave in vertical cross section looks like this, with X representing rock and H representing unstable rock about to fall (spoilered for length):
Turn 1
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXHHHHHHXXX
X X
X X
X X
X X
XXXXXXXXXXXX
turn 2
XXXXXXXXXXXX
XXXXXHHXXXXX
XXX XXX
X X
X X
X X
X XXXXXX X
XXXXXXXXXXXX
turn 3
XXXXXXXXXXXX
XXXXX XXXXX
XXX XXX
X X
X X
X XX X
X XXXXXX X
XXXXXXXXXXXX
The advantage to this is that you get natural looking arched cavern tops. The piles of rock left on the cavern floors could be annoying, or could be realistic. I think they'd work better in taller caverns. In 1 z-level high caverns it would result in weird /\ shaped formations. Maybe you could randomly convert some of the stone to rock pieces, but that might be difficult to do and keep other collapses working properly (eg when you drop obsidian and really want it to stay rock wall). Another advantage is that this lets cave ins occur underground but have no effect on the surface-something that wouldn't happen if you simply dropped the whole column above onto the floor. And finally, it gives the player incentive to build arched bridges and vaults.
Finally, I support different cave in limits for stone, soil, and constructions