The really long-winded version is here:
https://pokemondb.net/pokebase/meta/16065/?show=66359#a66359
The tipping point was how little he seemed to care that his actions were annoying and frustrating to others in the community, and the lack of respect (and any change) he showed to us when we warned him. He had more than adequate notice the ban was coming, and nothing changed. Unfortunately, that's when I have to step in.