With a native app if you write your code for Version X of the OS you can be 99% certain that Version X.1, X+1, and X+1.3 are all going to treat it the same. With HTML5 "fixes" to the renderer can mean that what was working will stop working. Or stop looking like it used to.
With an HTML5 app you should be able to write once and deploy many, but Mobile Safari, and Mobile Chrome, that do the renderings on IOS and Android don't handle all JS and CSS quite the same. So you may have slight differences. Much less than you would have with ObjectiveC vs Java, but differences none the less.
PhoneGap makes much of the stuff you want to do with the hardware easier, but not perfect. If you want to send a Text, or make a call or access the contacts you will have to at least touch a plugin, if not write some native code. Most of the time you can just clip a snippet from someone else, but if you want to do anything awe inspiring you will have to still get your hands dirty with native code.
http://tldrstuff.com shows what we were able to do with a single UI Core across Windows Phone 8, Android, and IOS.
We hit all of the platforms, and had less code to change, but our app doesn't "Feel" native. We don't have a UI that looks integrated with the OS, but we have concistency across platforms. Was our decision "right"? Hard to say. We spent less resources which was a major driving factor so I say yes. Did it keep us from being Wavii or Summly? I hope not. But it is hard to say. I don't know if we traded dev resources for glory, or if we saved money we will want and need to be bigger than either.