This would warrant a better mechanism to transplant spanners to a
different context: basically one would want a mechanism to listen
to slur endings in a different context than to slur starts.
Possibly optionally with a \once qualification.
I think the idea of an analogy to \change Staff would be a good
start. Tell a slur that it is going to end in another voice,
probably immediately before it is started. Maybe something like
\once \override Slur.target = "another-voice-name"
or
\once \override Slur.id = "my-changed-slur"
\once \override Slur.change-voice = ##t.
The first one would require the target to be a named voice, the
second would require all context to listen for that slur.
(of course slurs and co. are only one part of the issue, dynamics
and text spanners share the problem).
What about defining anchors? Having a slur ending in a different
voice makes the `(' ... `)' notation extremely hard to read (if it
works at all). Instead, I can imagine something like the following to
get a slur between voiceA and voiceB, starting on the second and
ending on the fourth quarter beat.
in voiceA: c4
\connect #'Slur #'voiceB #'myanchor
d e f
in voiceB: e4 f g
\anchor #'myanchor
a
The suggested `\connect' command would be generic enough to cover
(almost?) all spanner grobs; an optional fourth argument could hold
the necessary overrides.