The previous posters got a lot of the technical reasons (standard included libraries, downloading the whole app not just the patch), but there is also the fact that there just isn’t really incentive to optimize for size. Most folks have a high-speed internet connection at least some of the time, and phone storage has gotten very large.
If you don’t have any reason to make your app smaller (i.e. customers demanding it) why put in the effort to do so? I know I have developed applications where entire feature sets are removed but the code is left in because why take the risk of removing it? Nobody cares if the app is a few MB larger than it needs to be.