The reason why updates are so large is due to how the developer packages their files. They do whole replace of archives because their system does not use a differential method of asset loading. Take these two examples:
- Quake engine and derivatives that use the PAK format
- Bethesda engine that use the BSA/ESM/ESP format
With these systems, you can do an update without having to replace the main data archive, which is usually quite large. The game engine is designed to use a load order when loading game data at launch, where it will load the extraneous files before the main data files. In Quake engine games, it will just load anything, which is not particularly ideal for modern games because it allows you to use mods in multiplayer games that can't be tracked by anti-cheat. For the Bethesda games, they use a loadlist and a specified load order to determine which data files to load before the main game data.
Now consider the reason for the large file sizes in modern games: videos and textures. And the texture files include all the different sizes and resolutions any person may want to run. That means that 80% of the files that the game loads, or downloads in an update, are not used by you.
How about a real-world example. A lot of people have been complaining about the update sizes for MW/Warzone. Every time they add something to the COD points store, every time a new battle pass item is created, every new blueprint, you will notice in these sections that there is a video you can watch. Tons of videos and animations barely anyone will watch. And these are all in the updates making it larger.
Perhaps these videos should sit on a CDN somewhere, and if the client wants to play them, they are streamed. So that the video files do not need to be in the game data. Perhaps the initial game installs can be large, but once a user figures out what video settings they are going to use, the game will only update the graphics files that are being used and not everything. If the user were to change the video settings to something where a file is out of date, it would need to do an update.
I'm sure there are multiple ways to get game data sizes down, these companies just have to do it.