I think that xp should be awarded for combat (a la random encounters) as well as for objective completion. For the objective completion, it's fine if both the combat and non-combat solutions give the same amount of xp, but only awarding xp for objective completion and a finite number of objectives results in a de facto level cap (which I disdain) based on maximum possible xp. Further, there are all kinds of skill levels in players and some folks might need to be able to grind a few levels in order to deal with a particularly troublesome boss fight, for example.
Finally, given that non-combat, dialogue solutions will almost always be faster (in terms of real time spent) ways to complete objectives, you're essentially making all combat in the game a punishment. You have to fight because you didn't get this skill, or chose the wrong dialogue option and you lose some of your actual, real life time without any in game benefit because of it. Combat shouldn't be a punishment, it should be fun, and the only way to ensure that it stays that way is to include rewards for combat (most notably xp).