Reindex is basically an IBD minus the downloading of the blocks. Bitcoin Core just re-reads the existing blk files from disk instead of downloading them. Chain state, undo files and indexes are all recreated from scratch. Things might have been optimized in the newer versions but I remember reading that IBD could sometimes actually be quicker than a re-index.
I was testing v30 now and it does seem to use all the available processors more evenly than I thought but I need to see how it looks when it gets past blocks from 2020. That’s where all the ordinal transactions started happening. Wondering if those segwit transactions are processed in a single thread.