Failboat is not wrong. Some routers do a great job of managing upstream transfer rates so as not to overwhelm your internet connection. Here is the issue ... your network is fast, the internet is fast, but your link to your ISP is comparatively slow. It's the bottleneck. When networks try to shove more data through that connection than it can handle, the data has to be stored in queues (buffers) to await processing. This adds latency and is called bufferbloat. A router with a good QoS implementation (there are some pretty bad ones out there) can act as a traffic cop and manage data streams such that the upstream connection to your ISP is not overwhelmed.
The harder part is managing downstream (download) data. The "traffic cop" for this data is your ISP's router and we can not control this, but merely influence it. Through selectively dropping data packets, we can tell the servers sending data to other users that they are sending it too fast and please slow down (for more technical explanation read about the TCP protocol). While this works fairly well, it's not perfect and there are datastreams that don't listen to this slow down request (generally live media streams, VoIP, facetime, etc ... "live" stuff where repeating the data after the fact would not make sense ... for more information read about the UDP protocol). And, as Bill said, slowing down other people's data streams comes with it's own perils.