Agreed... unless he just plain shows a lot of interest in theory for theory's sake, I'd say to make sure to always have an application for any theory you introduce, that demonstrates the value of what you're showing. Or even if you can't literally demonstrate it, at least an explanation that's as context relevant as possible.
Example: If you start talking about sorting algorithms and runtime complexity, explain how a bad decision here could cause lag / latency in one of his projects. IOW, tie the theory back to something he can easily relate to.
Otherwise, if he already thinks he wants to be a developer down the road, I'd say you'd be doing him a favor by teaching him some of the things that you tend to not get in a CS degree program... that is,the "software engineering" stuff. Revision control, release strategy, testing, etc.
Anyway, it sounds like your son is in a pretty good place already, so you might want to be careful not to push him to hard, to the point where programming becomes a chore and he starts to tune out.
Finally, there are a couple of books that might help whet his appetite for hacking, such as Levy's Hackers: Heroes of the Computer Revolution or Kidder's The Soul of a New Machine or Rosenberg's Dreaming in Code.