Bios is more accurate.
Actually that not 100% true. I've been corrected on that a long time ago on this forum that as it not always the case.
Some times you can get a lower reading that you should be seen because the MB manufactures "tweaked" the sensor setting. Giving you what appears to be "better" to get more sales.
Although it's normal to have the bios temps readings higher than what you see in windows. My 5 year old pentium 4 system (478 socket) even does this.
My guesses to why so:
1. The bios reading the cpu case and not the cores (if thats what you been reading is the cores on the temp programs in windows)
2. the cpu is not in idle and/or the power saving features is not active (speed-step from intel for example)
3. windows programs can be wrong.
so there more to it when reading temps in the bios.