"A prompt, a wait, a notification, and a context switch" is a precise description of why it feels different, and it is worth naming that the loop is not just slower, it is asynchronous.
Flow depends on a feedback interval short enough that you can keep the problem in your head. Once the wait exceeds that, you reload the context every single time, which costs roughly what an interruption from a colleague costs.
What partly restored it for me was batching: hand the agent something big enough to be worth the wait, and do something that does not need the same context while it runs. The pattern that feels worst is a small prompt every two minutes, which is also the one most people fall into first.