Creo que esto es un error de Pg.
En mi opinión, PostgreSQL debería normalizar utf-8 en un formato precompuesto antes de realizar conversiones de codificación. El resultado de las conversiones mostradas es incorrecto.
Lo plantearé en pgsql-bugs... hecho.
http://www.postgresql.org/message-id/example @sqldat.com
Deberías poder seguir el hilo allí.
Editar :pgsql-hackers no parece estar de acuerdo, por lo que es poco probable que esto cambie rápidamente. Le recomiendo encarecidamente que normalice su UTF-8 en los límites de entrada de su aplicación.
Por cierto, esto se puede simplificar a:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
lo cual es pura locura, pero está permitido. El primero está precompuesto, el segundo no. (Para ver este resultado tendrás que copiar y pegar, y solo funcionará si tu navegador o terminal no normaliza utf-8).
Si está utilizando Firefox, es posible que no vea correctamente lo anterior; Chrome lo representa correctamente. Esto es lo que debería ver si su navegador maneja Unicode descompuesto correctamente: