Nigdy z JS nie miałem styczności, ale:
Garbage Collector - automatycznie oczyszcza pamięć. Coś, czego nie ma np. C++. Wszystko, co zalokujemy za pomocą new musimy usunąć za pomocą delete. W językach z GC (Garbage Collectorem) możemy nie przejmować się usuwaniem niepotrzebnych obiektów, bo jest to robione za nas.
Memory Leak - stworzenie obiektu i nieusunięcie go, gdy przestanie być potrzebny. Tzn tworzymy jakiś obiekt w funkcji i tracimy wskaźnik do niego po wyjściu z niej. Ten obiekt pozostanie w pamięci, a my nie mamy już jak go usunąć, mimo że jest nam zupełnie niepotrzebny.