Zip должна вызываться рекурсивно. У Intlist есть Head (первый элемент) и Tail (остальные элементы). И вот Zip сначала 2 головы складывает, потом снова вызывает себя. Там уже второй элемент становится головой и т.д. И чтобы выйти из рекурсии предусмотреть специализацию для пустых списков