Shouldn't most application programmers in OCaml be reaching for EIO or some other well-tested abstraction?

When there was no true concurrency, only preemption, eio was safe. Not now, you can still clobber things.

Edit: i was wrong! Since at least 5.1 it catches the cross domain access and errors gracefully.

Eio didn't exist before multicore OCaml actually, it was designed for it.