The full truth is a little more complicated, but let's explain it like this:
Some instructions are more complex than others and take longer to execute on the CPU. A division instruction will take more time to do than comparing 2 numbers, for instance. This changes with each CPU (a 8086 took about 140 cycles to multiply two 16 bit numbers, a 486 did the same in about 20 cycles, a Core2Duo does it in 1 -- now remember that the 8086 ran at 4.77MHz and the average C2D runs at well over 2000MHz, we're talking roughly a 6,000,000% speedup here! -- and all that's before taking into account that some instructions can "pair" and execute at the same time even without a multi-core CPU, so an instruction may take 3 cycles on a 486 in one case yet 0.5 cycles in another case [yes, that's half a cycle]).
On DOSBox' virtual CPU, all instructions take 1 simulated cycle (although of course it can [and does] take longer to execute on the host CPU). It would be possible to simulate the "proper" cycle timing for each CPU type, but it's a tremendous undertaking that would require enormous amounts of bookkeeping and thus indeed slow DOSBox down.
What you can do, however, is see how many instructions a 4.77MHz 8086 could execute on average in a millisecond. Not just how many multiplications it can do in a millisecond, but more realistic scenarios where different kinds of instructions are used. The number you get should be your cycles count for DOSBox. So, that XT machine running at 4.77MHz has 4770000 cycles per second, that's 4770 per millisecond. By my guestimate, instructions take (on average) some 10 cycles to execute. That would mean my guess for getting DOSBox to run at a speed resembling that of an XT is a cycles setting of 477. And indeed, for pretty much all the games I run where I need XT speeds, 500 seems to be a very good value.
To get your 12 MHz 286, that's 12000 cycles per millisecond, instructions might execute in 8 cycles on average, so try 1500 for a rough ballpark figure. A 33 MHz 386? 33000 cycles per millisecond, 5 cycle average, try 7000. Those are just guesses, but start working from such values.
My site: Ramblings on mostly tech stuff.