Default используется для задач, требующих интенсивных вычислений (CPU-bound), например, обработка больших списков, парсинг JSON. Он ограничен числом ядер процессора.
IO предназначен для операций ввода-вывода (IO-bound), таких как сетевые запросы, работа с файлами, базами данных. Он может использовать больше потоков, чем число ядер, потому что IO-операции часто блокируют текущий поток, позволяя другим задачам выполняться.