The problem here is that code changes don't propagate properly to the consumer of your build. Since the consumer has no way to tell what has changed and what hasn't and what the effects of these changes might be, they have to download everything again.
What you can do is split your product into many small parts so downloads will be small. But this is a huge effort to maintain for something that will save people a couple of seconds at today's download speeds (your product isn't 400MB, is it?).
My hope is that we will eventually be able to create build systems that use hashes and timestamps to determine whether something has changed. This information could be included in the download or the server which offers the download and dependency management systems could
- download only the changed parts (i.e. the single file which contains the new version number or just the new value for the single constant in said file)
- and determine if a change in your code could affect my code and if so, which parts.