Garry's Mod is a mod of the Halflife 2 engine. You can make your own mods of the Halflife 2 engine using the Halflife 2 SDK, or you can try to modify Garry's Mod through scripts. I don't think you're allowed to modify the source code to garry's mod.
If he wanted to really make his own "halo" type FPS from scratch, then what he'll want to do is work with the source engine, the halflife2 SDK. This is totally free if you own ANY source game (so you probably already have it, since you have garry's mod on steam). This will provide you with a bunch of C++ projects which wrap the source engine and allow you to do really ANYTHING you want with it. Tons and tons of AAA commercial games and indie games with everything from RTS to RPG to FPS are made using the source engine. Its extremely flexible.
That said, it is going to be EXTREMELY hard for your young son to get involved in. How strong are his programming concepts? He's going to have to be ROCK SOLID on C++ in order to start writing his own game / mod using the source engine.
So, if that sounds way too daunting for him (For a sixth grader, I can't imagine one kid being able to get anywhere writing their own video game from scratch, realistically. Old games like mario and mortal kombat had small development teams, he could TRY to write a 2D game from scratch like that, but its still going to be HARD. Those games took like 10 programmers with degrees a year to write. He isn't that qualified and there is just one of him. Modern, 3D, AAA games require teams of 20-50 programmers and billions of dollars. EDIT: okay, millions, I exaggerate. Even if you were the greatest programmer in the world, it would take you forever to write a blockbuster game by yourself. Practically impossible for anyone.)
Then instead maybe try just little mutations rather than a full conversion mod. You could try using the lua scripting that Garry's Mod supports in order to make small changes to the gameplay, maybe add a new item or a new feature. I haven't played around with Garry's Mod's scripting so I can't talk from experience like I can about the source engine.
You mentioned the UDK, which is pretty cool, but again, thats like taking the source engine and starting from scratch. It takes forever, and its REALLY hard.
The way I got started when I was first programming (and this was in 9th-10th grade, mind you) I wrote mutations for Unreal Tournament. They have their own language (unrealscript) but its pretty readable and pretty high level (it reads like java more or less) and the cool thing is Epic has always had tons of support for mods and mutations in Unreal Tournament. So, you could start just writing a mutation that makes rockets go faster, or rockets go slower, and then you can hop in Unreal Tournament and play your mutation. That way, you can start small. If you try to code a whole mod from scratch as your first experience, trust me, you'll never get past concept.
Hope that wasn't too demoralizing. I think its awesome your son is passionate about gaming at such a young age! (He installed Tortoise SVN on his own, and he's seriously in the 6th grade? This kid is a future software developer for sure!). But kids certainly don't understand how much work goes into building their favorite games, and being able to write your own Halo is a pipedream.
I'd say start with simpler things. Have him write pong, and then space invaders. Then go to Unreal Tournament and write some mutations, and when he's good with mutations, then you can think about mods.
And as far as tools, I did my first UnrealTournament mutations in Wordpad! No joke! Its pretty easy, you write it up, you save it, and then you use command line to compile it using the tools that are already provided with UT by Epic Games.
If you're going to work with the source engine, you'll need visual studio. You can probably get away with visual studio express fine, but you may have to download the windows SDK as well if you get the express version. Other than that, just tons of patience, and good programming fundamentals. :)