On-hold or closed questions still have a useful purpose for the site: to serve as an example to others. Every on-hold question (for whatever reason) is an example of what kinds of question we don't want on the site. If a new visitor arrives at the site, looks at existing questions, and notices that (for example) a question about programming has been put on hold, and reads the reason, he'll learn two things: first, that we aren't Yahoo! Answers, and what happens if a question isn't appropriate for the site; second, that if he asks a programming question, it'll be put on hold too.
It's an important part of the feedback process, cultivating the community of people interested in the same topic. This is why closed questions aren't hidden from the front page (unless they have a very negative score) or deleted right away. (This is only part of the reason. Deleting them right away would stop the author improving or refining the question so it can be reopened.)
There's another side of this: often, when a voter leaves a "this is off-topic" comment, the questioner will delete their question right away, without even waiting for it to be put on hold. They're probably trying to be polite and a good netizen: deleting the question after being told it's inappropriate.
This is a shame, for two reasons. It defeats the mechanism described above, so we'll end up with more people asking questions that don't fit the site. In addition, sometimes this happens with questions that are borderline, or where the commenter has misunderstood, so the question would not be put on hold. It might even have been an asset to the site had the author not deleted it. For these reasons, I'd like to encourage close-voters to only leave an "off-topic" comment in unambiguous cases, to reduce that risk; and I'd also ask those who can't vote-to-close yet to refrain from leaving such comments, and flag the question for a more experienced user to discuss.