в каждом потоке выполняются все операции, однако, если IO операций много, то и простоя синхроннх воркеров много, воркер, который работает в асинхронном режиме за некую единицу времени обслужит больше запросов.
Воркер в основном потоке получает запрос, выполняет в этом же потоке, если встречает долгую операцию, запускает её в отдельном потоке, и сразу принимает новый запрос. Так? Таким образом, если нет долгой операции, то не создается новый поток, экономится память и время на его создание. Ну так себе экономия, мне кажется. А если это корутина какая-нибудь, а не поток, которая еще меньше ресурсов требует.