Это не похоже на подход, который вы ищете, но это то, что я вижу:
Enumerable.Range(0, myString.Length - 1)
.Where(i => i % 2 == 0)
.Select(i => myString.Substring(i, 2).ToCharArray());
Примечание: я думаю, что если у вас нечетное количество символов, подстрока, вероятно, вылетит; Возможно, придется добавить проверку и использовать что-то вроде (myString.Length% 2 == 0? 2: 1), но я не проверял.
Второе примечание: для меня сложность заключается в том, что ваш Reduce на самом деле зависит от индекса массива, а не от значений; Отсюда мое решение перечислять индексы массива и работать оттуда. Другое решение состоит в том, чтобы предоставить метод (я не могу представить себе один встроенный), который перечисляет символы в строке, используя кортеж, содержащий индекс и символ.