data=ordered certainly does have significant performance problems. Most notably, it causes fsync() to actually act like sync(), so flushing a single file to disk can potentially cause a flush of the entire disk buffer instead!
That behavior for fsync() is permitted by POSIX (and incidentally matches a permitted, but not required, interpretation of sync()). It's also something that, given reasonable application design, should rarely be an issue.
Part of Firefox's problem was that practically everything a user would do resulted in fsync() being called -- that's unnecessary and unreasonable. It's one thing to fsync() when one adds a bookmark, or saves a password. Doing it every time a link is clicked is just insane, and would pose a performance problem regardless of ext3's eccentricities.