Once upon a time, Frank Cox theatre@sasktel.net said:
FILL would take the name of a directory and then start writing files from that directory onto a series of floppy disks in such a way that each disk was made as full as possible, but without modifying the files that it was writing.
I remember using a program like that. I'm not sure if something like that is available for Linux, and if it would handle USB (you'd have to actually look at each stick since they aren't always exactly the same size).
If it helps your search, what you are looking for is an application of the knapsack algorithm.