Для того, чтобы не перекладывать головную боль по управлению памятью на программиста.
Задержки, вызванные сборкой мусора, важны только в системном программировании и в задачах реального времени. Но для этих задач есть отдельные языки программирования.
А в прикладном программировании намного выгоднее переложить утилизацию освободившейся памяти на GC, чем тратить кучу времени и денег на поиск утечек памяти даже в простейшем коде.
Ты на этот ответ сам найдешь вопрос в процессе обучения программированию. Например, попробовав что-то писать на C#, где оно есть, и на Си, где его нет.
Как и на сотни тысяч других вопросов.
А если не будешь практиковаться, ничего не поможет.