Every fs suffers fragmentation to a greater or lesser degree. Some of them do have better allocation policies, and that's not only a thing of the fs you pick, but about how the concrete implementation works in any given OS. Linux is very fs-oriented so it's no wonder that fs-drivers get more love and attention than in other OSes. In any case, that's just part of the issue.
What really makes a difference -from my point of view- are the i/o schedulers. I/O schedulers group and reorder all the operations so the heads don't have to go dancing around forward and backwards over the disk surface. So, the file might be utterly fragmented, but the i/o operations are done always sequentially, regardless. This is why a good i/o scheduler makes fragmentation pointless, unless there's any specific filesystem issue (i.e. reiserfs 3.x suffers greatly from fragmentation) or the fs is completely full in which case fragmentation can get really high.
ext4 is even better than ext3 at handling this (via extents) and is planned to include an on-line defragmenter at some point in the future. I have no idea what the current status of this is though.