Heh. Well, mine wasn't completely arbitrary. If I remember correctly I was trying to trade off server CPU usage with memory usage. One chunk at a time is buffered on the server, so I wanted to keep it small enough that I could have a bunch of ongoing transfers on my puny t1.micro. However, too small of a chunk size resulted in too many roundtrips and lots of CPU load on the server. I settled on this value because I was able to pump a couple megabytes per second through it using one stream, which seemed reasonable.
Also: in further testing, it looks like Safari works with the drag and drop, but not the uploading. I purposely disabled all socket.io transfer types except web sockets in order to encourage adoption of modern browsers. Unfortunately, since I used such bleeding edge, unstandardized technology (drag and drop, file API, and web sockets), the browsers have changed and broken my implementation, each in a slightly different way, such that none of them work end to end anymore.