1 - The binary format itself isn't very efficient. Compressing it usually yields at least a 50% reduction in final size, often more
2 - Even though .ipa is a zipped format, there's no actual compression on the binary itself because it's encrypted before compression. I have no idea why they do this, I can't perceive any security benefit(Any jailbroken phone can be tooled to output the unencrypted binary. And you can bet anyone trying to reverse engineer your app will be using a jailbroken phone for their work)
Basically, if you're a large company with lots of apps and shared dependencies(Google, Facebook, etc...) doing the "right" thing and writing shared library code across projects ends up bloating your binary size immensely. And since binary size(rather than resources like images) dominate the final app size, you're in trouble if you want to keep app size down.
Source: I work on the iOS app for a music streaming service, despite our best efforts, our app downloadable size is ~35MB(~45MB installed size). Our android counterpart, almost effortlessly has the same app functionality with a 14MB downloadable package(they did some cleaning a while ago and got it down to 10MB at some point). Thing is, if we do proper compression(no binary encryption, single architecture) we end up with a 19MB .ipa file
PS: The compression issue doesn't affect installed size, but I believe the issue here is simply that (1) the binary format they're using is just too damn inefficient by default
it's gotta be something like mostly media (uncompressed bitmaps), metadata, (debug symbols maybe?), libraries / platform / compatibility layers (95% of which is never used for any particular install).
I have seen what it looks like when you actually try to cram "features mostly" into a few tens of megabytes and the GMail app is not that.
source: the demoscene
Google must have some insane cross-platform code library or something in there.
That's exactly what the Gmail app does too. What other features does it offer that the Mail app doesn't? If none, then why does it need to be so huge?
I picked on Gmail because it's the most recent culprit that I have noticed creeping (sometimes jumping) up in app size but it isn't the only one guilty of this. Like I said in my original comment, the Reddit app is 13MB and does a bit more than the Gmail app. I can read/write posts and comments and view images; similar features to Gmail, but I can also watch gifs and videos. Can someone explain why there is an order of magnitude of discrepancy between the two apps sizes?
That's potentially one explanation.
Play services and OS do not carry GMail shared components.