Как контролировать память кортежей?
А с чего ты взял что тут есть утечка? Да - увеличивает расход памяти, а чего ты ожидал? Ты создаешь на каждой итерации по два массива и сборщик мусора не успевает их утилизировать. По моему это нормально. Лучше подумай как оптимизировать алгоритм чтобы не создавать массивы на каждой итерации. Возможно надо переписать функцию чтобы она принимала ссылки на массивы и заполняла их внутри, а массивы создавались до цикла один раз.
Кортежы как и другие значимые типы (как и весть стек метода) не очищаются сборщиком мусора до выхода из текущего метода.

Поэтому остаются мертвые ссылки на массивы, которые не дают сборщику мусора их освободить.