Remember that the diode on the chip does not report a specific temperature to the mainboard! It is just a diode, not a full monitor report; in other words, the motherboard senses what comes off the diode within the chip and then reports it to you! If the mainboard is reporting temperatures, say, 10C high, then all temperatures from all diodes attached to the mainboard will be reporting 10C high. The only difference between the diode in the chip and the diode attached to the mainboard is that the diode is inside the chip, and must connect to the mainboard monitor through pins on the CPU packaging. It is unlike reading your hard drive's S.M.A.R.T. reports, whereby the hard drive has a diode, it takes this reading off the diode and then reports the reading to the mainboard (thus, your S.M.A.R.T. reports will not be under/overreported by the mainboard, if it's off, it's the drive's fault); the chip is not reporting the reading, it is indirectly attaching the diode to the mainboard, and the mainboard is doing the reporting.
However, the on-die diode will always be most accurate; any inaccuracy in a report based on an on-die diode is purely based upon the missreport of the mainboard that translates and reports the reading off the diode.
-Ed
EDIT: Final clarification: your chip's on-board diode does not tell the motherboard, "I'm reading 40C." What it does is it feeds the signal from the diode directly to the mainboard, and then the mainboard says, "this diode appears to be reading 50C." If the CPU actually translated the diode signal into an actual temperature and reported it to the mainboard, life would be so much easier, but that would not work right with the current implementation of SMBUS (thus the reason why S.M.A.R.T. reports aren't routed through the SMBUS, either).