The difference in reported CPU temperatures mostly comes down to the sampling time - the CPU package one is being reported directly by the CPU, and it probably updates the value every few milliseconds. This is to ensure the CPU can shut itself down quickly enough, if it overheats.
The motherboard's thermal sensor for the CPU will be sampled at a much slower rate, as all it's doing to checking the overall temperature of the chip that's plugged into it.
All modern CPU+motherboard combinations do this: for example, the system I'm currently gives these readings:
View attachment 86494
Note the difference in max temperatures between what the motherboard is reporting, compared to what the CPU is reporting. The faster sampling rate of the CPU has picked up the temp spike, whereas the slower motherboard hasn't.