To me, the only sensible isolation level for transactions is serializable.
There's something to be said for this. As was discussed a few weeks ago, "repeateable read" semantics differ quite a bit between MySQL/InnoDB and MS SQL. In MySQL/InnoDB, you can have two transactions update the same record in repeatable read mode, and lose the second update without an error being reported.
But you take a huge hit on performance in serializable mode. You can only do one thing at a time.