I think you’re asking “why don’t we use MonadIO in System.IO?”. (At first it sounded like you were asking the opposite.)
MonadIO
System.IO
If that’s what you want you can have it now in an alternative Prelude/standard library for example rio.
Prelude
rio