This is one of those bugs that creeps up on you, so I figured my best bet would be to delete anything unnecessary from the existing project and resave it. So, I did just that.
I deleted every track except the one with the example regions on, tried joining the regions and there was no issue. What?! I undid that and the issue returned.
I then deleted each track one-by one until there were just two tracks remaining. I then found, through some investigation, that if I removed one plugin or one send from the other track, the issue would go away. Again, what?!
I then closed the project, intending to zip it and post here. Before I did, I opened it to check the issue was still there after the save-close–reopen procedure... The issue was gone. Thrice... What?!
I went through the whole procedure again and this time I took a screen recording. Notice that the first join creates timing issues; after removing one plugin on a different track the issue goes away!
As I say, the issue seems to disappear after I save and reopen it. The confusing thing is that if I reopen the original project, the issue is still there! Unfortunately I'm not able to share that project on a public forum.