When flagging a question as being off-topic, only meta.programmers or Stack Overflow can be chosen. What if the question doesn't fit either of those options, or maybe not any site on the Stack Exchange network?
Er.. what? Just take the default. The default is what you want, it's just plain off topic.
is off topic
Questions on Programmers are expected to be about subjective issues in software development, within the scope defined in the faq
Migration paths between sites depend on there being a natural affinity between the sites as exists between a site and it's meta or between Programmers and SO.
While it's possible that a question posted on Programmers might really belong on Cooking it's pretty unlikely and the negative impact on the user interface of having 40 or so options in that box would outweigh the likely benefits of the one question every year or two that would use that functionality.
I'd also argue that users have to take some responsibility for asking their question in at least roughly the right place. If they don't make that basic effort and get it wildly wrong it's hard to justify why others should spend their time finding it's real home or answering it.
In terms of questions which don't fit anywhere on the SE network - realistically those are questions which are just going to get closed (which is what happens if you select close as off-topic but don't pick a site to migrate it to).
SE works by having well defined communities of knowledgeable users in clearly defined fields but that does mean that some things just aren't going to fit. While that's not great for someone asking a question on a topic which doesn't currently have a home, it is the very thing which makes SE sites great places to get great answers for questions which are on-topic.
It's worth remembering that SE isn't claiming to be able to answer every question, and that leaving off topic questions on sites where they didn't belong would dilute the focus of those sites and ultimately lead to a Yahoo answers style free for all.