think about how a game works, lets say a first person shooter, some of them can have up to 64 people playing together at the same time (counter strike source). when i shoot at someone or move about, it sends the data to the server of what i am doing and how it affects the game. the more data i can send the better the hit register accuracy is.
for example people with a small upload, when they shoot someone, sometimes all the hits dont register. this is due to poor upload speeds. everything needs to work in sync. if you dont send the data in time, the server ignores it, or it creates lagg.
someone with a large upload has a better chance of all their hits registering with the server over someone with a small upload.
hosting is the same principle, the bigger your upload, the bigger game you can host. i think most servers on CSS have like a 100MB upload or thereabouts or higher. upload for a server = download for us. so if a server has 100MB upload, it can only upload 100MB at any one time, say if its a 64 player server. it will allocate just over 1MB per person, but my download is 50MB. so in theory the server could increase their upload by 10 times and still not fill my download. i think with my 1.5MB upload i could host a 10 player game from my computer, when it increases to 5MB i could probably host a 20 player game from my computer.