No, it could also rewrite the call to join in terms of pre-multiconcat concatenation. I thought at first this would cause problems for magical vars, but that's not the case.
But the point stands. To change this would impose a performance hit. Rather than slowing down join to provide more consistent behaviour, they've opted to speed up concatenation while providing less consistent behaviour. And I agree with this. In general, a programmer should never read and change a variable in the same statement. It introduces readability issues if nothing else, but it's common for it to invoke undefined behaviour.