We are in an interesting time. A tweener.
The benefits of native are that you get the highest performance capabilities. You can use all of the devices capabilities like the accelerometer, camera, location and storage. Most apps are built this way.
The down side, first and foremost, is that any code you write for one platform is generally useless on other platforms. So you will need to build the app multiple times, assuming you want to support Android, Microsoft and IOS.
It is debateable how “difficult” native code is versus HTML5. I’ll leave that argument out.
To my eye, it seems that HTML5 is getting better, faster and more powerful. The future is HTML5. The problem is that I need to build my app now, not in the future. Should I use HTML5 because that is where the puck is going? or use native because that is where the puck is now. How long does a mobile app last before it is replaced?
We are in a tweener time where the old is still powerful, but the new is on the rise. This is the most annoying of times to build something. The good news is that mobile apps don’t last more than a few years. We aren’t building the great pyramids in Egypt, meant to last a millenia.
Interestingly, many consumer apps have been going native. I am not sure this is a good idea, but it’s happening. I’d lean towards HTML5 personally.
We are truly cursed to be developing code in interesting times.