One thing that I think gets lost in discussions of hypocrisy is that there are actually two types, and they should be handled very differently.
The first type is when an alcoholic tells you to slow down on your drinking, e.g. "do as I say and not as I do" hypocrisy. This kind is usually ok, because it tends to be more of a "learn from my mistakes" situation than a failure to understand the contradiction in your own words.
The second type is "rules for thee and not for me" hypocrisy – people that try to catch others out in their "bad behavior" but then think it is totally fine when they do it themselves, as they provide some sort of post-hoc rationalization for why it is ok for them to do it ("because context" or whatever) but totally unacceptable for others to do so.
Most people conflate the two types, but I try to only refer to the latter type as hypocrisy, and I think it is generally bad to be a hypocrite in that way. And from the sounds of it, the Basecamp employees in question were definitely more of the latter than the former.
The damage done to Basecamp's public reputation, internal morale, and now all the projects set back by losing a third of their employees is unfathomable -- all for the satisfaction of "by gum, at least I don't have to say I put up with one of my now-former employees talking back to me in a way that was arguably hypocritical." On balance, was that really the right tradeoff to make here?
What do you do when a (previously-complicit) employee keeps an issue going on and on and on?
A little 'hey, get off your high horse, you were involved too' doesn't go amiss.
(As a first, second or even third reaction it's not great - but it sounds like there had been a lot of talking preceding this).