Indeed, this is tricky. Besides difficulty of defining SPA routing at scale, the reason why SPA transitions get the 500ms time to adjust their page structure is because unlike with an MPA hard nav, where you start with a blank canvas -- with SPA transitions it's not just the new content that is typically shifting as it loads, it's often the old content that shifts in place to make room for it.
So, while I agree with your previous paragraph that the cause of the shift was the transition to the destination URL, in practice we often see the content that actually shifts was there because of the previous, source URL. So it's perhaps equally tricky to just always attribute to the destination URL, merged with it's hard navigation CLS scores.
That said, I'm very eager to hear more feedback on how this works out in practice. It may well depend on the site. It could be important to actually attribute to the transition (for transitions from A->B "Incremental LS" is X)? Or, maybe it is fine to just merge on destination and still catch patterns in the aggregate.
Feedback and thoughts welcome.
Cheers.