It’s not an either/or: effects allow all kinds of cool inversion of control tricks that you may use in your implementation without ever exposing them to the user. As I understand it, the idea is not to replace monadic APIs wholesale with (untyped) effects because of the reasons you mention.
See GitHub - ocaml-multicore/eio: Effects-based direct-style IO for multicore OCaml for an example which uses effects internally with an API that does not mention them.
In fact, the current (5.0) recommendation is to use them precisely like that: purely on the implementation side, without exposing them to the user. It was precisely to discourage exposing untyped effects at the API level that the dedicated syntax for them was not included in 5.0.
Cheers,
Nicolas