CPU thermal instability may arise in the inner core (which is designed to work at higher temperatures than, say, the L2 cache) or in the outer CPU. If the CPU was a thermal superconductor it would be all at the same temperature and this would not matter.
Normally heat is removed from the whole surface covered by the heatsink, and is generated mostly in the core(s) and in lesser measure in the ancillary hardware depending on the power consumption rate per unit of volume (or of surface, since the CPU architecture is basically flat).
Raising the CPU voltage and frequency has the effect of increasing heat generation in the core. If this increase, minus the removed heat at steady-state, drives the temperature too high for the core, then it does not matter how many cores you disable - those still enabled will crash. Or fail due to electromigration after some time.
If the temperature is core-safe, though, you'll observe that the temperature outside the core is still driven upwards, as excess heat seeps from the core to the fringe (in red and yellow in the above picture).
So it can happen that while the core is below its critical temperature, it still raises the fringe temperature above fringe temperature tolerance. Then something in the fringe malfunctions, and the CPU in its entirety becomes "unstable", even if the cores themselves are still in the safe zone.
Since heat in the fringe comes (also) from all the cores, hyperthreading sections, and so on, disabling those features reduces this heat and may keep the fringe stable.
For that matter, even the kind of code which is being executed may influence the power generation; so that you may have failures when running the same code compiled with or without, e.g., SSE3 support. Actually, even the choice of instruction sequence may be relevant, and there are studies in that regard.