The reason we don't do that is that it would mean redownloading almost the entire game again every patch.
The steam patcher breaks down big files into blocks and then only gives you the blocks that change. If you try rearrnaging the internals of a single file then basically every block of the file will be changed.
All of the "garbage" in the file is old file versions. By not removing them it makes the patch sizes smaller for existing users at the expense of making new full downloads by new users larger.
Of course, the big single file approach isn't good for steams patcher generally. The main reason is because steam makes a full copy of the entire file when it patches it, patches the copy, then moves it back over the original again. This is to prevent corruption in the case where, for example, you lost power while steam was in the middle of patching a game. This means that patching a 1KB file makes you computer rewrite the entire many-gigabyte file which is why it's slow.
So for that reason, we will be changing the resource system for steam over to use the method we use for consoles, which will significantly improve the situation. Not only will it improve all the patching issues on steam, but it will also come with a pretty significant improvement to loading speed of non-SSD drives. The console version attempts to bundle related files together into files that can be loaded all at the same time.
It's just taking some time because it's not as high priority as other issues that people have been working on. The main blocker is that we have the make the non-steam patcher aware of this new system too. Also, this would of course require a complete game redownload when we do the patch, so we want to make sure we only do it when we have a pretty significant expansion already.