There's work going on for better app caching systems at the browser level. This is a UI and platform issue, but there's no tricky technical aspects. The user expresses the intent of wanting to cache a web app, and it is cached locally.
But crucially you will be able to buy on the app using x,y,z, and continue to play the app using a,b,c from different hardware/software vendors, unlike the situation today with say a game bought on a mac.
That's the advantage of the web over native APIs, and why I think its ethos will eventually win out - it is better for developers and users, but not for the corporations who would like to sit between the two as intermediaries.