Ясно, что любой n-кортеж может быть представлен связкой вложенных 2-кортежей. Так почему же они не то же самое в Haskell? Это что-то сломает?
Создание эквивалентов этих типов значительно упростит функции записи в кортежах. Например, вместо определения zip, zip2, zip3 и т.д. Вы можете определить только одну функцию zip, которая будет работать для всех кортежей.
Конечно, вы можете работать с вложенными 2-мя кортежами, но он уродлив, и нет никакого канонического способа выполнить вложенность (т.е. мы должны лежать влево или вправо?).