Premièrement, il n'y a pas de mode AutoCommit dans PostgreSQL et les fonctions pg_* de l'API PHP n'essaient pas d'en émuler un.
doc de pg_query dit
Il garantit donc que pg_query("UPDATE1 ..; UPDATE2...")
s'exécute en une seule transaction et a un effet tout ou rien sur les données.
La séquence
pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");
est équivalent à pg_query("UPDATE1 ..; UPDATE2...")
en ce qui concerne l'intégrité des données (l'état semi-fini ne peut pas se produire).
Quant à la note "à moins qu'il n'y ait des instructions BEGIN/COMMIT... explicites", elle n'est pertinente que si celles-ci ne se trouvent pas au début et à la fin de toute la chaîne d'instructions SQL. C'est-à-dire, pg_query("BEGIN; update1; update2; COMMIT;");
est équivalent à pg_query("update1; update2;")
mais (évidemment) pas équivalent à pg_query("update1; COMMIT; update2;")