I seem to understand GP wants to move a whole DAG potentially having multiple leaves, not just a DAG ending at a single leaf.
IOW
git rebase --onto shaX shaY shaZ
ends at shaZ, git walks backwards from it until the commit whose parent is shaY to produce the list of commits to cherry-pick onto shaX
So presumably this would be useful:
git rebase --onto shaX shaY [shaZ1 shaZ2 shaZ3 ...]
with shaZn being optional and consisting of all leaves down from shaY
This is achievable with git but it's not just doing n rebases like so:
git rebase --onto shaX shaY shaZ1
git rebase --onto shaX shaY shaZ2
git rebase --onto shaX shaY shaZ3
...
because each rebase would produce different commits for parts that are common to shaZ n1 and shaZn2 ancestry, so one would have to first find all the branching points and do partial rebases onto the rebased parent commits in order.
It definitely can be done (manually or automatically) but is not as trivial as one might think.