... I understand that's the theory, but in practice, I've never seen it working that way.
I don't see how having the CoC affects any of this. If someone is behaving poorly, first of all, a CoC will not deter them. If someone behaves so poorly that you decide you need to remove them, the community (the small portion of people who give a f) should see why you removed them, and again, a made-up "contract" will not be needed.
It's ok to stand up for yourself and simply say (without pointing to a document you put in your repo when you were bored), that: "John Doe was behaving poorly, and I don't want to deal with him, I banned him, you don't need to like it, but it's my decision".
Just my 2c... I don't want to add more procedures to my open source projects or voluntary organizing. I'm doing it because I like it, not because I want to pretend I'm at a townhall meeting.