It’s easier to be overly aggressive about filtering than to have users or parents complain about offensive or inappropriate language.
Of course, there are conflicting requirements or external factors that come into play. If the product will fail (or you will get fined or thrown in jail or whatever) if someone enters a bad word, then after taking enough reasonable precautions to not have false positives then at least warn the user ahead of time. For example in a web forum app, you could pop up an error on submit, with the censor-substitution that it would apply, and have a selection box that the user can check to indicate that this is a false positive. The message then gets held for moderator review (or goes through by default with the censor marks, until moderator review it). If it is a business app, then part of the popup message could include a link to corporate policy that says a false claim of a false positive is subject to employee discipline or whatever.
I just don't like when it blindly cuts out a persons name without any warning to the user, because the censor characters imply that the message submitter actually entered a cuss word that they didn't (i.e., it is a false accusation bordering on libel).
As a parent of three teens, I argue this is the parent's responsibility not that of the game designer or content generator. Someone will argue that parent's can't be on constant patrol. Yes, that's true too, thus we find ourselves in a quandary. Personally, I have chosen the side of accepting that sooner or later my kids are going to be exposed to flavors of sex, drugs, and rock and roll that I may find unsavory or not age appropriate - and I'll try my best to provide a framework for dialog and understanding. Other parents will choose a path of extreme restriction or other educational tools (church, etc) for their kids, and they have that right as well. Neither parenting style is right or wrong, but it has to fall to the parents, not to third parties to protect little Billy and Susie's precious ears / morals.
The other reason this makes me angry is that it is lazy programming. The issue has to be obvious to any developer that is looking for words embedded inside other words. They know it will produce false positives and cause user grief. Yet they write that code anyway. Maybe their boss told them to do this, but the issue has been well known and document for a very long time -- no excuse to not push back on this against management. And I've seen too many developers that if they show laziness in this area, other areas of the code base has even more subtle WTF moments.