OpenSocial provides a different specification. Theirs is based on web services, which means that it's quite clunky. Everything works via HTTP requests. XMPP is a more streamlined protocol for sending XML snippets, but HTTP has the advantage of already being widely deployed.
OpenSocial was an initial attempt at all of the non-Facebook networks to provide a common platform. Google was one of the original leaders, with its previous foray into the social networking arena: Orkut. Orkut is still very popular in the Portuguese-speaking world, but is more or less dead in English-speaking countries.
This set of specifications aims to solve a slightly different problem to OneSocialWeb. It is aimed more at developers of applications that run on top of social networks than at users. You get some interoperability between networks from it, but the main advantage is that it provides APIs for people like game developers to use and then deploy their code on any participating social network.
OneSocialWeb and OpenSocial are not necessarily competing specifications. It's possible to use OneSocialWeb for communication between federated social networks and OpenSocial to communicate with applications running on these platforms. If you're writing a web-based game, you probably don't want to have to add XMPP compatibility, so OpenSocial is more convenient, but for inter-server communicationand for things like chatyou don't want to have to do an HTTP request every time you want to transfer a few bytes of data.