That's just an implementation detail. I don't think there's anything about effects that _requires_ delimited continuations to implement them.
But apart from that and to answer your question there is an alternative to delimited continuations, and that's undelimited continuations (which essentially requires allocating call frames on the heap).
It can instead do things like "do some work, resume the computation, do some more work."
Or even more invasively, "stash the computation somewhere, return from the handler site, let the rest of the program run for a while, then resume the computation."
Then it would just be (equivalent to) a function call.