iozone: 5 concurrent threads random read of 300K blocks does more ops/s than using only one thread, what could be the underlying reason?

What is surprising?

1 thread means command, wait, read, loop. There is a wait element in - the latency.

Multiple threads eliminate that and - allow the discs to be more optimized thanks to queueing of multiple commands. That you get more IOPS with 3 threads is not surprising at all.