Who we are affects what we make. Engineers are focused on functionality. With IM, a key ubiquitous feature is knowing when contacts are available. While this feature is useful, it falls short as a social user interface.
When I launch my IM client, Atrium on Mac, I know who is online at that moment. I also know that, unless they disabled the feature, people on my contact list know that I know. While this is fine normally, an awkward situation develops when recent communication with someone on the contact list didn't have proper closure. The sense of closure is relative so the awkwardness could be felt by only one party. Still, it's awkward.
Not all communication is need-driven. One might just want to chat casually with a friend over nothing, to say hello, to maintain the bond. This is hard to do with IM because starting a IM chat session is too abrupt for casual situations. SMS is less abrupt but still noticeable enough to signal to sender when a SMS message is ignored.
Groups as Rooms
In real life, chance encounters provide the opportunity to communicate with friends. Likewise, IM clients could turn each contact list group into a chatroom. But this doesn't work well if the groups are not shared, like rooms are. Better approach is to leave groups as is and add rooms in parallel.
In real life, one can briefly peep into cube or office of the person one wants to talk to. If the person is busy, a brief non-verbal gesture is all it takes to set up a chat at some later time. Peeping could be easily added to or on top of IM clients by allowing one party to send peeps, some visual *ignorable* hint, to a contact and the recipient to see a log of recently received peeps. IMHO, peeping is too strong a gesture *if* contact status monitoring is also available. It's just right when one must peep to find out whether a person is online or not.