Griboks, открою Вам секрет: сборщику мусора начхать на кортежи, потому как кортежи -- структуры. Массивы он трогать и не должен, вернее, должен, но когда -- никто не знает, ну нет детерминированного освобождения памяти в дотнете, от слова совсем. Вам предложили переиспользовать массив, идея -- очень даже ничего, также, посмотрите в сторону System.Buffers.
А еще лучше, изучите матчасть, тогда таких вопросов у Вас появляться не будет.
Вы знаете, я, честно и откровенно говоря, совершенно не понял, что именно Вы заменили на классы и тем более, зачем здесь ref-параметры, по причине отсутствия контекста задачи никаких предположений сделать не могу, тем более что-то посоветовать.
Посему, видимо, присоединюсь к предыдущим ораторам: ошибок нет, а прога работает именно так, как Вы ее написали и делает именно то, что должна: выделяет 100500 байт памяти на каждую итерацию.
А еще лучше, изучите матчасть, тогда таких вопросов у Вас появляться не будет.