The web will always be 2 steps behind
By its nature, native apps will push new boundaries (the way Flash did) and HTML5 will come along 5-10 years later with an open version. That's what happens when you have the likes of Apple, Google and Microsoft all trying to make their platform attract users and developers. How would I crop and compress an image in HTML5 for example? Send push notifications? One day, but by then who knows what native software will be doing that HTML5 can't.
HTML5 also behaves very differently across different mobile platforms and OS versions. The dream of write once run on iPhone and Android hasn't been realised yet, so you end up with something that uses the lowest common denominator in order to work. Yes it costs more, but I unless it's a very simple app, writing 2 apps for each platform will always result in a better end product.
Then there's the connectivity problem - until we have fast internet everywhere, on all our devices, native apps that can download their content will be needed. Can your HTML5 connect to the internet and download the latest content automatically every night?
What about the (very real) question of is JavaScript, a language originally intended for form validation and basic scripting up to the task for building and maintaining large code bases?