Well apart form the big studios it wouldn't be done at all, its left to the animator to ensure that it does not. (pixar used something like this in ratatoule) You can kind of do the hand squashing thing tough with muscles, more on this later.
Theres several issues.
1) Collision checking is a bit heavy, Its a lot of calculation to check if something hits something, Computers dont see they have to check, and each check costs time and so on. Now computers have become pretty fast, however its still heavy when you need it to be accurate, for example fine for low poly models but not every high res.
Users have a lot of trouble with understanding scaling of problems so developers would need to ensure it works on every sane use environment. Something that studio techs can sometimes skip. This said however if this WAS the real problem we would have this. Unfortunately its not. 
2) What happens when you animate and what happens when thet animation is played back ate 2 different things. See how a complex object blocks your movement is dependent on the entire shape of the path of approach ,a d the shape of the objects. Many users forget that what you do inside the animation program while dragging the objects about is NOT the same as the resulting animation of those key frames. So the software doesn't KNOW what the end result is going to be before its there.
Now giving the user a false feeling of being n top of the game isn't a smart idea. Its every easy to make a rig that is impressively dynamic when dragging it about, its another thing for the rend result to be. See if what you precieve getting is not what you get it gets terribly hard to get the things you want done done. So its a trade of between apparent ease of use versus control. You don't want to sacrifice control over something cool. You also dont want to make a system that overrides the artist too much, because the defeats the purpose of having said artist at all.
There are some solutions for this but it requires the user to be very educated about the rig. Not practical in general. And teh usefullness changes form frame to frame quite wildly.
3) practical realities, characters aren't allays ready when you animate them so offcourse the solution wouldn't count if the characters weren't finalized yet. How about the displacement maps and so on. So at the end of the day youd need to be able to wrok with a tool and without one even in case something changes.
4) defrormations and bindings. The system as they are dont usually know a lot about what is important and what is not.
5) what do you actually do when the user DID something thet caused interpenetration to happen despite any safeguarsd?
Would this be done through contraints?
Not really. Youd use constraints to keep the objects together. They are separate problems, tough for uneducated poepl they can seem same. (its the reverse of the underlying problem). But you can use this on a specific sub problem.
all those years ago and still eludes me today
Im afraid that if you dint evolve any strategies by now the sheer complexity of the issue will still keep you eluded.
There are a few things you can do tough.
One you can counter deform the sufraces with the muscle system, you can use contraints to pin positions in place, and as a last animation pass just fix any interpenetration.