en realidad lo que hace es enviar un AJAX, por lo tanto se valida en el servidor.
pero ¿te parece seguro enviar un ajax para validar el captcha y después reenviar otra vez los datos para volverlos a validar?: el punto es que debes enviar los datos junto con lo que el usuario escribió en el captcha, de modo que garantices la "humanidad" del usuario que envió dichos datos, es ilógico por ejemplo: validar el captcha primero, almacenar si es válido en un input hidden y después enviar los datos, porque con firebug por ejemplo puedo cambiar el value de dicho input por true y ¡ adiós captcha !, hasta con el mismo js lo puedo hacer y no digamos un bot!
por otro lado si envío el catcha por ajax y marco desde el servidor que el token del form está "validado por captcha" (tendría que enviar el token junto al captcha), ya el token no me sirve, tendría que generar otro, porque de lo contrario corro el riesgo se suplantación de mi token, y si uso sesiones: que me roben mi cookie por XSS.
así que lo mejor y más eficiente es validar el captcha desde el servidor, enviándolo junto el form completo, si son muchos forms, puedo validar en el login con catcha solo la primera vez, o si el numero de post es superior a cierta cantidad, suerte