Provide multiple phone # to disambiguate destination group
One serious problem of the current approach to groups is that it's extremely easy to send a message to the wrong group by mistake. This can have serious consequences depending on the privacy and/or security involved in the "leaked" information.
The repro is quite easy. If you belong to group A and just joined group B, your new default group will be B. Now, just replying to an incoming message from group A, without prefixing it with the group name, will cause the message to be sent to group B, rather than A (which you were replying). This is due to the incapability of the SMS to do correlation of messages, which is a serious shortcoming on its own.
This implementation also changes the way we typically use cellphones, where an address book ensures you know who you're sending messages to, and replying is strongly associated to a reply to the original sender regardless of message content.
Note that disambiguation of destination group is a per-user operation. It's not a group-specific feature (i.e. not every group needs to have a unique phone number). Hence, I propose that GeoChat should have a pool of numbers that are assigned to users as they join groups. Each group for a given user would have a unique phone number, and the routing would be done based on those two pieces of data. The number of unique phones lines that GeoChat would need would equal/determine the maximum number of groups a member can join.