I personally don't understand the confusion between the fact his given name is Henry and he chooses to be called Harry. My name is Elizabeth and hardly anyone calls me that. I prefer Beth, and that's what I've always been called. It doesn't mean my parents should have just named me Beth instead. They had their reasons for naming me Elizabeth, the same as Charles and Diana had their reasons for naming him Henry. It's an old, established name in the royal family, and they clearly had a fondness for it. Harry is merely a nickname, and besides.....Henry is a very formal name. For a baby, which he was at the time, Harry was perfect. He's chosen to keep with it, rather than revert to the more "grown-up" name.
It's no different than someone named Margaret going by Meg or Maggie, or someone name Jennifer going by Jen or Jenny.