While it does take planning, it's not quite as hard as you make out. Linear games have an easier time with an image folder per day(/update), but a sandbox games can do an image folder per character or per quest. This game would work better with quest folders. This game already has image and video folders for the xmas and halloween specials.
I thought about that. The issue is that a lot of the updates have fixed graphical issues introduced in past updates. Say we have a file/folder for Amy. Replacing one image will then have to replace all images for Amy. Alternatively the Amy images will end up being split between multiple locations, which is part of what I referred to as slowing down development. It takes more time to look up the files for something specific and it's harder to get an overview of what is included.
This deep into the development does run the risk of many bugs when implementing. However, moving forwards it's just rinse and repeat. Many novice devs have managed to smoothly continue with updates after help getting started. The scripts in this game look like the programmer will cope just fine.
If you really want a programming solution, which doesn't hurt non-programming development (it's my impression that non-programming is the bottleneck in development time for HM), then do something like this:
Don't call videos and images directly. Instead make a file, which stores the path to each as a unique variable for each. Execute this file on startup and use the variables whenever something is used in the game. Use a function to set paths. This function will have a list of the "patch files" and will loop through them to see if there is a match. If none, then use the default path (the current one). Don't save the results. Instead run this every single time or savegames will not work if updated.
Next write a program, which tests the md5 for each file against the previous release. Make a copy of anything added or changed and put it in a sub folder, but inside it keep the path, so it's just adding a prefix to the path. This folder and updated scripts can now serve as a smaller update.
The beauty of this setup is that for development purposes the media files will still be organized like right now. The tradeoff is higher memory usage (likely not much) and slower startup time. As the startup delay could be significant, maybe the patch build script should list files in the update so it's a list lookup rather than trying to detect files present in encrypted files. Maybe make it a default list and then run a series if "if file present, run function to change a list of paths". Those functions should then be autogenerated by whatever script builds the folder for the update.
I think this is the level of programming needed to make incremental updates possible, reliable and reasonable to work with for non-programmers. The issue is that it is not a minor programming task. Sure it's doable and in fact I think I would be able to do it if I had the time to do so. The problem is precisely that: time. It could end up taking ages to make and get tested and fixed to become as reliable as is needed for stable releases. If a programmer skilled enough to do this would allocate that much time to HM, then I imagine there are other aspects, which would be better use of the time. Something, which has a positive impact on the gameplay for everybody, not just those, who have the low end internet connections.
Also while it feels like gigantic downloads, the release frequency makes it much less of an issue. I mean I think it's something like a single GB on average per month.
Making the full game available for ludites who find it too difficult to install an update will remain a must.
That and for first time players. Or just players, who doesn't want to apply update 7 to the same install at some point and just want a clean install.