There are no limitations to the speed that the client's can get.
Up and Download is done by getting chunks of data. (Chunks are small pices of data) and not by streaming the file up or Down.
After a chunk is send, it will be testet and verified, encrypted etc. and then the next chunk is allowed. This process only takes a split second, but makes datatransfer a bit slower than normal streaming of data.
This is done for various reasons, but enshures that the data arrives correctly and secure.
But speed test, shows that on a 100Mb connection it's possible to use it fully. (No notisable difference between streaming and chunking)
"Sometimes it's slower". Yes this can be so but not due to limitations. If the server is busy with other Up/Down loads it will share the bandwidth, and the one client can't use the full upload.
Saving the file to disk on the server can also have a impact. If the type of storage on the server is slow or on a slow connection internally, it will take some time to save/read the chunks, this will make the up/down load seam slower. Especially if a lot of users are uploading, the disk can get busy. Even if there are a lot of bandwith avalible.