The only reliable way I've found to manage this is to never actually unsubscribe them from receiving messages. So, whenever a subscriber texts STOP, I present them with the standard STOP language but I have a script text join in the background with an additional keyword that lets the JOIN keyword know not to send a message to the user.
I'll then update this records mobile-opt-in flag in Sales Cloud to false inside that same script rather than managing that state in Marketing Cloud. If you weren't using the connector then I'd imagine you could just write to a master status DE and do lookups on that data extension when generating your mobile campaigns (or when in journeys) to manage the users status rather than having the system deal with this.