One cause of this seems to me to be that most things that people would want to show off (and then possible get smacked down for) have a high enough level of complexity that they can be hard to quickly and constructively criticize by someone outside of the process of making the thing.
Rather than try to seek out the good work that someone has done many levels deep in their code - a time consuming process that might depend on an intimate knowledge of the application, its requirements and the processes of those who made it - it's way easier to find a flaw (usually a flaw that you know is flaw because you've made the same mistake) and point that out. Or, rather than a real discussion of what assumptions the creator made and how they may have led to a less-than-ideal solution to a problem it's way easier to say 'wrong, next.'
Really serious review and criticism is great but it depends on a lot of effort in building context to make it useful for all the people involved.