A multi-service flow can be a chain of events where each service reacts, or a coordinator that calls each in turn — and the difference shows up when something breaks.
choreography no central place to look. the flow exists only
as a diagram somebody drew once. adding a step
is a deploy of one service.
orchestration one place that knows the whole flow. it is a
dependency and a bottleneck, and it is where
you look at 3am.
small flows: choreography. flows with more than about four
steps or any compensation: orchestration.
The debugging asymmetry is the deciding factor more often than the coupling argument. A choreographed flow with six steps has no artefact describing it, so understanding what should have happened requires reading six services — and the correlation id is the only thing making that tractable at all. An orchestrator is a single point of failure and a single place to read, and the second is worth more than the first costs.