Spaces I am not sure about (first 2000 oddly compressed clocks 36 odd gigs if memory serves) but a few points none the less, I could probably generate a complete uncompressed a dat file (other doing it: import into spreadsheet, sum of bit size from size column and divide by 8- you might have to account for Mbit and Gbit disparity depending on the dat but that is nothing major).
Trimming and compressing is pointless and may cause future troubles if you need to patch roms (nothing major by why cause headaches down the line)- reasoning you only trim a heavily repeating section (00 or FF) which compresses to nothing anyway (make a file of 00's and compress it). By similar token many roms have long sections of 00's inside them.
7zip and a few things like it compress by data rather than by file- this means if a rom has the same data as another in the set (region dupes, sequels, cookie cutter games which accounts for most of the DS set*) then space savings increase rapidly. Note that doing this can increase extraction times as you have to rebuild that rom from what is essentially a giant database and obviously if you compress each rom individually you lose this. There is a tool somewhere that does region dupes but I have forgotten the name.
*I may not put out that many hacks but I do pull apart hundreds of roms so believe me when I say they have a lot of the same data inside them.
As Hadrian says though use the internet or better yet usenet (people reup complete sets or runs every few weeks) and with the better providers now sporting upwards of 500 days retention.......