Good article. Too many people just keep using the "ACID" term without really understanding what their transactional semantics are.
A good example of bumps you might hit is a problem I encountered a while ago: the default level of transaction isolation in postgres is “Read Committed”, not “Serializable” as the SQL standard mandates. This sounds fine, until you get constraint violations under load because of race conditions. See http://jan.rychter.com/enblog/2009/6/6/postgresql-transactio... if you want the full story.
BTW, I suspect problems like the one I encountered exist in lots of software systems, they just rarely get discovered.