There are no limitations to the speed that clients can get.
Up and download is done by getting chunks (small pieces) of data, and not by streaming the file up or down.
After a chunk is sent, it is tested, verified, encrypted, etc., and then the next chunk is allowed. This process only takes a split second, but makes data transfer a bit slower than normal streaming of data.
This is done for various reasons, but most importantly to ensure that the data arrives correctly and secure.
Our speed test shows that is possible to fully use a 100Mb connection. (Meaning no noticeable difference between streaming and chunking).
If the server is busy with other up/downloads, then it will portion the available bandwidth among the clients, so no one client can use the full upload speed.
Saving the file to disk on the server can also have an impact. If the type of storage on the server is slow, or is on a slow connection internally, it will take some time to write/read the chunks.
This will make the up/download seem slower. Especially when a lot of users are uploading, the disk can get busy, even if there is a lot of bandwidth available.