I still find it strange that no single core gets pegged at 100%
That is intentional and it is because of the thread scheduler in windows, it is intentionally migrating the 2 active threads, cycling them across the cores.
Supposedly this is done on purpose at the request of the CPU makers to reduce the average operating temperature of any given core such that the system uses less power (less static losses) and creates less fan noise.
I cannot confirm if this really is a request from the CPU guys, but I can confirm it really does result in lower temperatures and lower power consumption, but it also slightly lowers performance because the cache has to migrate every time the thread migrates. I can also confirm that the scheduler is at least intelligent enough that it knows to avoid double-loading a physical core or module with two threads, if it can it will avoid loading two threads on the same module and will avoid loading two threads onto an HT core.
The extra 5% or so of CPU activity is likely associated with the scheduler itself, shuffling data across cores and tracking it all with performance counters and the like.
Some programs will manage their own affinity locking which gets around the scheduler shenanigans, but most programs don't do that.