See this: https://www.google.com/support/webmasters/bin/answer.py?answer=189077
These variants are automatic conversions so the variant-neutral version is in fact the canonical version of the page. Even though it's in a different script it is the same text.
Essentially all the variants point to the variant neutral form with canonical links. And the canonical page includes rel=alternate forms for each of the variants including a hreflang on the <link>.
In search engines like Google and perhaps any others that decide to implement this as well it allows the search engine to know what the canonical is and understand what other languages or variants a page is available in. When provided with this information the search engine can give a user using the search engine a link in their own language instead of the canonical link. In other words, if Google has separate support for say zh-tw and zh-hk and then for the same search result Google can send a user who uses zh-tw to our zh-tw variant and a user who users zh-hk to our zh-hk variant. All with the same search ranking and results for the page.
The only shame is that each lang requires a rel=alternative and we support a pile of languages. If it wouldn't require hundreds of lines inside the head I would've liked to add support for an improved persistent uselang. Then Google would be nice enough to send users browsing google.de who follow an en.wp link to a page that has a German user interface.
So the bug here is in Facebook ignoring what the user inputed and canonicalizing the url instead of either keeping the url (but using the canonical to group it into one opengraph item) or implementing support for rel=alternate's with other hreflang's and providing users who use different variants of zh with different urls.