Teaching, just like programming, takes a ton of practice. I spend four years in the classroom, another two coaching teachers, and have been running training classes for Jumpstart Lab since 2009. I don't think I'm a gifted teacher, I've just practiced more than most.
Frank Webber, who's joining me, spent a significant amount of time teaching a year-long course at the University of Washington as well as spending time 1-on-1 mentoring other developers in Seattle.
Steve Klabnik has spent a lot of time with me co-teaching private training sessions and spends a tremendous amount of time "teaching" online through open source work.
It's just a matter of understanding the methodologies of teaching and a bunch of practice. We've practiced more than anyone else.
Jeff in particular taught high school in inner-city DC with Teach for America. He then went on to help start-up a school and served as principle-ish, if I remember my history right. So he has quite a bit of Actual Teaching Experience.
As someone who's taught alongside him, Jeff's really good at making sure that everyone is paying attention, that he's not going too fast or too slow, and balancing questions with moving the lecture forward.
Oh, and Jumpstart believes in its teaching so much that we put our curriculum online: http://tutorials.jumpstartlab.com/ We sell teaching, not secret-sauce lessons.