From the blizzard TOS:
Communication
When participating in communication of any kind (chat, voice communication, group finder), you are responsible for how you express yourself. You may not use language that could be offensive or vulgar to others.
Hate speech and discriminatory language is inappropriate, as is any obscene or disruptive language. Threatening or harassing another player is always unacceptable, regardless of language used. Violating any of these expectations will result in account restrictions. More serious and repeated violations will result in greater restrictions.
Naming
Names are subject to the same rules established above. Any name the player has the ability to customize—such as player names, BattleTags, and guild names—must be appropriate and inoffensive. Any name that violates our standards or disrupts the community will be changed, and additional limitations may be placed on the offending account per our discretion.
Take note that acceptable names are determined by player reports and Blizzard's decision, and role-playing servers may have distinct standards for using game-appropriate names.
Essentially, other players are in charge of what is deemed an "inappropriate" name. If you get reported enough in game, you will be forced to change your name, and/or suspended, or banned, and it is completely subjective.
For example, think of these as character names... Poop123456, letsgobrandon2222, trumpsucks2000, genericname420, genericnamexxx. Which do you consider "inappropriate"? Well, as you might have deduced, it's subjective. Completely. They could all be inappropriate, or they could all be non offensive depending on your views/what you find inappropriate.
Let's go through it...
Poop123456. Harmless name obviously. Or is it inappropriate because it's vulgar?
Letgobrandon2222. If you don't like Biden, this is inoffensive. If you're a diehard Biden fan, this is offensive.
Trumpsucks2000. Same as above, but with/against trump.
Genericname420. Inappropriate because of 420? Or is 420 just a string of numbers?
Genericnamexxx. A triple X usually means porn or something sexual. Could be construed as offensive.
See how ridiculous this system is? Any of these names could get you banned (if you get report abused in game), or you could never be banned for them.
I'm summary, blizzard's in game two click report system with automated punishment is lazy design that is abused because they have no specific rules for naming or even communication in general. And the point is, if a name gets past the character name filter in character creation (without any special characters or numbers in place of letters), it should not be bannable under any circumstances.