From the help page on
gc:
A call of 'gc' causes a garbage collection to take place. This will also take place automatically without user intervention, and the primary purpose of calling 'gc' is for the report on memory usage.
However, it can be useful to call 'gc' after a large object has been removed, as this may prompt R to return memory to the operating system.
So it can be useful to do, but mostly you shouldn't have to. My personal opinion is that it is code of last resort - you shouldn't be littering your code with gc() statements as a matter of course, but if your machine keeps falling over, and you've tried everything else, then it might be helpful.
By everything else, I mean things like
1.Writing functions rather than raw scripts, so variables go out of scope.
2.Emptying your workspace if you go from one problem to another unrelated one.
3.Discarding data/variables that you aren't interested in. (I frequently receive spreadsheets with dozens of uninteresting columns.)