And yet we do this for websites. You hit up Gmail and your browser pulls down all the Javascript, CSS, HTML, and images that you need to "run the app". This is not fundamentally different from downloading a native app. The web content is granular so you don't have to download everything up front, and your browser caches to avoid fetching unchanged resources constantly, but these techniques could in theory be applied to native apps as well.
Not everyone has access to unlimited data plans or fast connections.