In my experience it looks like a case of matrix clients not doing a good job of communicating that things happening in the background haven't finished yet, and throwing generic error messages (a bit like lemmy-ui does sometimes).
I've been able to join invite-only rooms on other instances - it said 'failed' at first, but when I went back later it turned out that I had actually joined.