This is a very classic situation due to the point of view of the two items. vCenter get's it's statistics from ESXi, which sees what is being used by the VM on the physical CPU via the scheduler. This is actually a very accurate view, when taking into account IOWAIT, CO-STOP, and READY.
Now from the guest OS perspective, this get's different because the VM uses watchdog timers to determine the load of a CPU, regardless if it's physical or virtual. The OS will launch a watchdog on every CPU it sees (remember, this is from the VM Guest OS perspective) as a background task, then measures how long it takes for this timer to complete. Since it's a background task, it is the last thing to execute on the CPU. So, this measures how long the CPU takes to get to this watchdog task, therefore it's a good approximation of how busy the CPU is, based on clock cycles and such.
The issue comes in that the guest OS is not aware of the external items, such as IOWAIT, CO-STOP, etc. So, when these items are impacting the VM, even though the guest OS isn't doing much, that watchdog takes a long time to return, so therefore the guest OS thinks the CPU(s) are more heavily used than what they are. This really comes into play with over-sized CPU's experiencing high CO-STOP. So basically, the in-guest metrics for CPU should be taken with a grain of salt. Not completely ignored, but weighed much less than the ESXi metrics.
Now with that, you also have to understand that vCenter does not present the raw data, but rather a roll-up of data, further making the data inconsistent with the in-guest, because you are looking at two different time periods and polling periods. esxtop is really the best way to troubleshoot VM performance, or vROps, because it stores the raw data and you can change from a 5-minute resolution down to 1 second if you are so inclined.