Как я понимаю (могу ошибаться):
Кнопка ведёт не сразу на гугл, а на свой скрипт, который:
1) Запрашивает у гугла по адресу
www.google.com/accounts/o8/id документ:
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/server</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud</URI>
</Service>
</XRD>
</xrds:XRDS>
2) Парсит ответ, узнаёт из него возможности и расширения, поддерживаемые провайдером, и адрес странички, на которой пользователь должен авторизоваться
3) Перенаправляет пользователя на эту страницу, естественно составив правильный запрос со всеми полями (openid.ns, openid.mode и т.д.)
Гугл после авторизации редиректит пользователя на указанный openid.return_to, после чего наш скрипт делает запрос на гугл для проверки авторизации