There's a combination of several things going on here.
1) Jamil and John Palmer aren't perfect. They screwed up.
2) Two pounds of CaraMunich is kind of a lot for an extract beer.
3) Like Hoosier said, extracts often don't ferment down very well. A lot of times the pilsner extract will ferment out fine, but those specialty extracts such as the Munich extract might not.
4) The yeast you used is only capable of about 73-75% attenuation, so the best attenuation you probably could have expected is about 1.023 or maybe 1.022 at best.
I would have jacked up the partial-mash pilsner malt, added 1-1.5 lb table sugar in place of some extract, and used distilled water (you didn't specify your water). All of these things would have guaranteed a lower FG as well as a better tasting beer. See all my generic guidance for extract brewing here, it might help you out for next time: