Everything mentioned in the thread is pretty spot on. I've developed two PhoneGap apps and the results were pretty underwhelming. In the end, it does not feel native... and that's because it's not. People are so intimate with their phones that any slight divergence from native behavior is magnified. They may not know exactly what's wrong, but it just won't feel the same. Swiping won't feel the same. Dragging won't feel the same. View transitions, form elements... the list goes on. Every new feature that an OS makes requires your HTML5 framework to imitate something similar... and it will feel like an imitation.
And then there's the fact that Android, Windows and iOS all have different UI paradigms. You want the user to automatically know where the Back button is. However, the back button is in different locations for each of those OSes. This means that each OS will still require OS-specific builds or classes. There's no true one-app-fits-all.
The best approach to HTML5 apps would be fully custom UI/UX. Imitating native is a losing battle... and at the same time, creating your own UI/UX is a lot of work... that will just result in a poorer final product than the native UX that Apple, Microsoft and Google have spent thousands of man-hours researching.
All this said, I think a good approach to mobile app development would be to build native apps for Android and iOS and then an HTML5 app for the rest of the various mobile OSes.
If you must write an HTML5 app, forcast.io has a fantastic writeup on the lessons they've learned developing one.