It's about more than just row locking.
MySQL's INNOdb tables, by the way, support MVCC, but let's face it, they haven't gotten the thrashing of heavy duty use that PostgreSQL has gotten running things like the .org TLD.
The real advantage PostgreSQL enjoys in enterprise class apps is things like not allowing you to insert 'abcdefghjijklmnopqrsas' into a varchar(10) and silently truncating it, or rounding down a large number to make it fit into an int4, or allowing you to FK A myisam table to an innodb table and then telling you, after a roll back, that maybe some of your data can't be recovered. It's a whole slew of differences like that that make people who know relational database theory quake with fear at the idea of putting a large transactional system online using MySQL.
Also, PostgreSQL tends to degrade under load more slowly, and with pgpool and slony for replication / load balancing, can scale to truly ginormous heights.
Add in Point in Time Recovery, available in 8.0 in the next couple weeks, and you have pretty much all the things you need for an enterprise class installation.
But PHP can handle anything. I'd put a single 4 way Xeon box with 4 gigs of ram running PHP up against a farm of J2EE boxes and still expect better performance from the PHP machines. Java is a hog, plain and simple. The only reason to go with Java is that it's easier to find enterprise developers familiar with it, and that it has a lot of cool features you can pile on top of it, like hibernate, to make it easier for developers since they now never have to touch the database directly, but hit an abstraction layer that puts all the data into a familiar ORM model.