Like many programming language features, GC can be both a bonus and a liability.
From experience, there are many programmers even in the professional world, that shouldn't be allowed to manage memory (think of every game you've heard of that has memory leaks). But then, if you never get experience managing memory you may have bad habits when it comes to GC languages.
The best thing you can do in either case (GC or not) is to re-use memory. Barring a seamless world environment, even in C++, I consider any memory allocation that isn't during level loading a bug. Additionally, any use of pointers that is not absolutely required is also a bug.
