It is a false dilemma that we are constantly thinking with, to decide whether to ban so-and-so or not. With small feature additions we could get the best of both worlds--the benefits of banning a certain user, while also the benefits of keeping them on!
Take banned user Chibi. Banning him was difficult--they let him back in no less than 7 times, because they knew how valuable he was. He was intelligent, well-liked--he produced valuable content for the forums. But sometimes he would maybe go too far. He would get drunk, and do things he would regret. So we just have to cut our losses and ban him to prevent these occasional mishaps right?
No! Wrong! What we could do is add a layer of moderation for his posts specifically. You could make it so none of his posts become visible to anyone else until they gain a "sponsor." Specific volunteers to "sponsor" him, to kind of "be his editor" would sign up, and they will be able to see his submissions and decide whether they support them or not. This way you have a non-banned user deciding what is appropriate--what they are willing to put their balls on the line for, and what isn't.
For instance say Bigballs, Liquid`Drone, Rekrul, MPXMX, and probably many others agree to "sponsor" STIMEY D OKGM FISH and Chibi. Then you will occasionally get posts from the banned users, but only ones that are acceptable. It's win/win, and if you can't get anyone to sponsor you, then that's your problem. The feature would make contributions by various users more possible, while still preventing the damage that a ban also tries to do.
There are many other ways to reduce the either-or severity of bans. You could restrict a user to 1 post per month, or 1 per week, etc, and adjust it depending on what you think of the post. You could make users temp-banned instead, and simply make the temp bans longer and longer--never needing to make a ban permanent (honestly don't you think 1 year, 2 years, 5, 10 years is enough at some point? permanent bans are simply lazy thinking, lazy execution--throwing away value that your site otherwise could have).