I am not sure, how Oracle deals with updates on foreign keys, but i would expect, it does not have this problem as well. It is likely, that in times before MVCC, postgres did not have these issues either.
PG didn't implement foreign key constraints until well after MVCC was implemented (I was one of the people who worked on the first foreign key constraint implementation).
Bottom line is that use of foreign key constraints should not cause deadlocks and should not require explicit locking by the application. We should view this as a PG bug that needs a workaround.
Has anyone tried this with the latest version of PG? I know locking issues were being worked on for foreign key constraints oh ... a year or so ago???