The current trends in software development industry say: "We have fast processors, large memories and huge hardisks so there is no point to care about the program sizes". So why OSHS goes against these trends and tries to have the programs as small as possible?
The reason is simple, but not visible at first look: speed. Yes, at first sight it seems that with the fast disks available today a difference of 32 KB or so in the size of a file does not matter but let's examine this a bit.
A typical harddisk available today (even though it is very fast) is about 10000x slower than a typical CPU available today. If you don't believe me, pull out your pocket calculator and compute with me: An average access time of a harddisk is about 9ms and an average speed of a CPU is 2 GHz. This means that moving 512 bytes of data from a harddisk to memory costs 9ms (because harddisks access data in 512-byte chunks). The same block moved from memory to memory (what is done by CPU) (1) is worth only 128*2*(1/2GHz)=0.000128ms (the 128 comes from the fact that current CPUs access memory in 4 byte chunks and the 2 says that each 4 byte chunk of the information needs to be read from the source memory region and then written to the destination region). This is approximately 10000 times less than the harddisk time.
This means that if you have 512 bytes of unnecessary overhead in a program file and you use the program 1000 times (without a disk cache of course), you must wait 9 seconds for the harddisk to read the overhead bytes of the program file in total. Yes, it is fact that today everyone uses disk caches that kills this wait. But also it is true that in a typical operating system you surely don't have only one program. So when you have 1000 programs with 512 bytes of overhead in each, you are still forced to wait 9 seconds for harddisk loading the overhead bytes but no disk cache will prevent this from bothering you this time.
However current programs does not have only 512 bytes of overhead. They have much more. Some of my researches revealed that at least 30% of the content of a typical binary is only unnecessary overhead (these were done on Windows) (read more). Or in other words: by clever design of the operating system, the compiler and the binary file format one should be able to generate binaries that are approximately 30% shorter but have exactly the same functionality as the original ones.
So multiply the 10000 with the size of the overhead in the programs in a typical operating system available today and you have it: you total-high-end-super-machine is turned into ancient-extremely-slow-crap because most time the hardware waits for the harddisk to move the unnecessary bytes of the programs here and there.