For Stack Overflow, I suggest the following modification:
For the first
Xdays of a post's existence, comments are displayed as they are now.
Xshould be set based on the number of days an open question is likely to be active on the site.
Xdays, all comments associated with the post are hidden; you need to click a link at the bottom of each post to reveal comments. There are two exceptions:
All comments on closed questions are displayed, unless the question was closed as a duplicate.
All comments on posts with a negative score are displayed.
Comments supposed to be like sticky notes which tend to lose their stickiness over time and eventually fall into desk clutter. Months later, you gather them up and puzzle about what they were supposed to mean before dumping them in the trash. But comments have turned out to be more like red pen notes your teacher puts on your first draft or graffiti. (Sure there are good comments too. But I can see no way to tell the good from the bad. And no: comment voting does not help.)
If you really want to preserve some information, be sure to put it into the body of a post. People who care to do so can still open the comments and read all the funny jokes and whatnot, but the rest of us are free to ignore them. (Note that people with the power to delete comments should probably still see them by default. Sorry.)
The genesis of the idea may be found elsewhere, but the reasoning for preserving comments on "problem" posts is that they allow people who run across the posts later (usually via a search) to have a history of what went wrong. Comments on closed questions and truly bad posts have the potential for teaching how the system is supposed to work.