I find that a lot of people can't tell the difference between what's meant to be constructive criticism and an insult.
Often, the right target for criticism is supposed to be the person himself. For example, if someone without the right domain knowledge or understanding of math deluded himself into thinking he knows enough and starts messing things up, you really don't want to help him along.
Imagine some VB noob "fixing" your mission-critical Lisp code, saying it would have been easier if it was all ported to .NET or something.
Dealing with all these situations in the best way possible requires a lot of finesse, I'm sure.
I just noticed, in retrospect, that such a blunt approach as not giving any criticism ever is STILL better (for me, not my employer necessarily) than what I was doing.