It only seems right to me that counter-offers should be made when the situation warrants, and that they should in no way be made to substitute for proper compensation and raises in the first place.
Ideally, you never have to make counter-offers, because you pay your people properly. But mistakes will be made. If a really good employee gets a job offer with a better salary, and suddenly you realize that this guy is worth it, why not make a counter offer, if you think he's honest and isn't going to just leave three months later anyway? If the situation warrants it, do it. Take the situation as a sign that you screwed something up, but that's no reason to not even bother to try to fix it. Likewise, if a guy gets another offer and he's clearly not worth it, wish him well and let him go. Don't be dogmatic.