Sometimes a task needs slightly different parameters on different targets. It can be slow to accomplish this with separate calls to run task and breaks what should be a single logical step into multiple.
Use cases: A package task where the package has a different name on different targets A task that checks or updates ha proxy which may be using a different socket path on different targets.
Writing a plan that runs multiple tasks in sequence is slow since you have to wait for the task to finish on one target before starting it on the next. This could be solved with concurrency but it also relates to hiera data bindings.