This is taken from the Ars Technica review of Snow Leopard. It’s that page of the review and the next page.
Long story short - they added blocks to C and Objective-C. A single line of code can wrap any section of code into a potentially concurrent section. You can assign the blocks to user-defined queues or system-provided queues. The system will ramp the number of simultaneous blocks up and down based on number of physical CPUs/cores/current load. A GUI app can spin off a section of code without complex programming and have it update the main GUI thread on completion, again without complicated programming.
It makes it trivial to turn a non-threaded code base into a heavily threaded one. Or to turn a serial task into a parallel task. All of this could be done in C, C++, Java and .Net without GCD. The key difference is the ease of it and the fact that the load is tuned by the system.