I have no reason to believe that Russell wrote a garbage collector for the first Lisp implementations. I used the adverb "properly" specifically because it's possible to implement Lisp without GC, but this isn't really a viable approach long-term. So to make Lisp practical, significant work on GC had to be (and was) done.
My understanding is that the first version of Lisp with true GC was Scheme. Which was, not coincidentally, the first version of Lisp with lexical scope and closures.
The first implementation of Lisp used reference counting.
BIBOP is the dynamically expandable version of MACLISP, the SAIL
standard MACLISP. Essentially, the main advantage of BIBOP is that
whenever one of the expandable spaces runs out of space, BIBOP requests a
larger core allocation from the monitor and the delinquent space grows in
the allocated memory.
December 1973; updated March 1974
The (in)famous "Bibop" (pronounced "bee-bop") LISP scheme
has been available for some time now and seems to be more or
less reliable. Bibop means "BIg Bag Of Pages", a reference
to the method of memory management used to take advantage of
the memory paging features of ITS. The average LISP user
should not be greatly affected in converting to this new
LISP (which very eventually will become the standard LISP,
say in a few months).
Often reference counting is considered distinct from GC; sometimes the term "tracing GC" is used to disambiguate. Refcounting & tracing GC have the same purpose, but different implementation techniques and performance implications; and perhaps more importantly, reference counting can't collect objects which cyclically reference one another.