The entire TOR network is a volunteer effort based on donated bandwidth.
Suppose you’re volunteering some of your bandwidth to function as a TOR relay, and that I’m running P2P through that relay. You’ll find that I’m taking all of your donated bandwidth all of the time – nobody else can get through you without running into the ceiling of your TOR allocation.
So rather than helping the community, you find that I’m grabbing all the bandwidth you’re donating. (It’s the nature of P2P to try to take all that it can if not restrained.) TOR is slow because it consists of adding a bunch of extra hops to the traffic, privacy over speed. (This is discussed in the FAQ.) Because of that, people will tend to crank up the bandwidth, making the issue worse.
It won’t take long before you’re tired of giving your bandwidth to me, and stop donating since it’s all going to one greedy person who isn’t paying for it. The project loses another volunteer and another relay.
Let’s consider how bittorrent works. When you start to download, you send a metafile to the tracker, which says, among other things, “please add me to the swarm for this torrent, I listen on port number x”. The tracker adds you, listing your IP address and your preferred listen port. It gets your IP address from whence the request came, (which is why you can torrent through a router). Other peers get that list from the tracker, just as you did, and they try to contact you at that IP address and port number.
But suppose you’ve “torrified” the request. It’s taking the IP address from the TOR exit point. which almost certainly does NOT have that same listen port open, and won’t forward traffic sent to that port, in any case.
Other swarm members who try to contact you just hit the exit point’s firewall and bounce. For you, this is exactly the same situation as not having a listen port at all. Your speed goes WAY down. (Try it. BC has a “no listen port” option in the preferences.)
Can’t you get around this by telling the tracker your real IP?
Well, yes, with some clients you can. But weren’t you just trying to be anonymous?
If you want something more official, there’s this.