A lot more information would have to be exchanged (i.e. the total number of files necessary and the sum of all their file sizes) prior to downloading.
The way loading works now, datablocks are sent to the client one by one. If the client reports that it does not have one of the files for the current datablock, the server sends it.
Rewriting the game / engine to perform differently would be an unnecessary bitch.