TL;DR: autojoin only means whether to join
automatically on login, it's not
for tracking/controlling which MUCs you're currently in; "I don't want to
join automatically" is not equivalent to "I want to leave now."
I completely agree that the decision of what to do wrt join/leave should be
up to the client and not part of the XEP at all. However the XEP already
had language like "On the other hand, if the event is a retract
notification, the client SHOULD leave the room immediately." and so this led
to specifying an inconsistent UX (as opposed to not specifying UX at all,
which would be preferred).
I think the solution in practise will be to ignore the SHOULD in clients
that know what they are doing.