Why does it take longer when reorganizing a larger number of blocks?
More data needs to be sent, possibly.
The way the system works is that clients only forward blocks when they are added to the main chain.
So, if the chain was
A1 <- B1 <- C1 <- D1
and the client received B2, then it just stores B2 in RAM and doesn't forward it. If you then send C2, that is again not forwarded.
Once you finally send E2, the alt chain becomes the longest. This means B2, C2, D2 and E2 are all added to the main block chain and the client broadcasts all blocks to its neighbours.
They then have to do the same thing.
The effect is that you have to send all 300 blocks to all peers before any of them will forward any of them.
With enough blocks the other client might even run out of RAM, so not store all 300.