Словари сильно различаются по размеру, и по внешнему виду (учитывая, что все заканчивается через <5 с), объем обрабатывающей работы невелик. Не зная больше, трудно сказать, что на самом деле происходит. Насколько велики ваши элементы словаря? Сценарий основного потока, с которым вы сравниваете это, выглядит так? </p>
Parallel.ForEach(dict1.Values, item => ProcessItem(item));
Parallel.ForEach(dict2.Values, item => ProcessItem(item));
Parallel.ForEach(dict3.Values, item => ProcessItem(item));
Добавляя Задачи вокруг каждого ForEach, вы добавляете дополнительные накладные расходы для управления задачами и, вероятно, вызываете конфликт памяти, поскольку dict1, dict2 и dict3 все пытаются одновременно находиться в памяти и в горячем кеше. Помните, что циклы процессора дешевы, а ошибки кеша - нет.