Seu link para os documentos do Psycopg2 meio que explica em si, não?
Portanto, a menos que você esteja usando um nível de isolamento diferente ou usando o PgBouncer, seu primeiro exemplo deve funcionar bem. No entanto, se você deseja um controle mais refinado sobre exatamente o que acontece durante uma transação, o método try/except pode ser o melhor, pois ele é paralelo ao próprio estado da transação do banco de dados.