Yes, migration is a poorly-understood ball of sorrow and frustration right now; let's fix that. Your goal of migrate when it makes things easier for the asker is, IMO, the right goal. To that end:
Treat migration suggestions like duplicate suggestions. When somebody votes/flags to suggest a migration, present that suggestion to the OP along with the other site's on-topic summary (kind of like this suggestionthis suggestion, but on the receiving side instead of the close-voting side). If he agrees, create the account for him (if necessary), migrate, and create the stub on the original site. This should leave the user on his question on the new site, so he'll be right there and can further edit, tag, etc. This approach also speeds up getting the OP his answers; he can act immediately instead of waiting for a community migration or a mod to handle a flag.
That stub on the original site should be just that -- a migration stub. Don't allow reopen votes or edits; the OP has moved on.
This should be the only path to migration. No community migrations, no mod actions. "Migrate" is really "move", and it's up to the OP.1 It makes sense for the OP to control this because he can already, instead, just go ask the question there, leaving duplicates in his wake.
Further, if the OP doesn't follow through on the other site, it's not going to be useful to the other site unless it's already super-well-asked and requires no clarifications from comments. How many migrated questions do you see with no user attached to the question? I think that's the majority of migrations I see. I sometimes wonder if the answers to such questions help anybody at all. (Yes answers are for everybody, not just the OP, but when I'm answering a question I know there's at least one person who cares. Except if there isn't because there's no user.)
So instead of communities making the decision to migrate, let's help the asker move and maintain his question.
If the question is then closed on the destination site, don't send it back to the originating site. I've seen that give OPs whiplash, and I don't think I've ever seen it help. Since the only way to migrate a question will be by action of the OP, there's no point. This makes the situation equivalent to "closed and reposted on the new site", instead of leaving the user confused about where his question really is.
This approach allows SE to bake in any restrictions you like on migrations. If you don't want questions to be migrated under some circumstances, then you won't offer that option to the OP. (Ideally you'd also disable to close/flag option in that case, but we don't have that now so it's not required for an MVP. You can come back to that.)
1 I can see an argument for letting mods do migrations, but as a mod I'm not thrilled by having to evaluate requests for migration to a bunch of different sites. Mods aren't supposed to be arbiters of correctness. So I'd rather that mod migration be an unusual exception, not SOP. I've seen first-hand that community migrations don't have a good success rate.