to me this seems to break the rules of transaction semantics, but it matches the behavior with autocommit=on ...
... which doesn't matter, because if you wanted that you'd just set autocommit=on.
I think all this discussion of autocommit is a pointless side-track. Reading between the lines, the real complaint appears to be that we abort the xact if a statement ERRORs, and by default other DBMS vendors don't. OP wants something like psqlODBC's "statement" error-rollback mode where savepoints are done automatically before each statement.
Of course they're contending that PgJDBC's behaviour is wrong because it doesn't do exactly what they expect, with no reference to the specs and standards concerned, which doesn't help. They're also using a bunch of incomplete pseudocode and vague references to make the argument, which means it's all really rather hard to follow. But I'm pretty sure the above is what they actually mean, like in https://github.com/pgjdbc/pgjdbc/issues/423 .