Hi Adam,
I had to go make the same decision a while ago. I made a list of pros and cons and this is what I came up with:
Traktor PROs
Accurate autogain (whereas in Serato it is hit-and-miss)
Gain control over each track while recording (in Serato the recorded signal bypasses the channel gain controls)
Intuitive loop control (a. loops are treated the same way as hotcues and are accessible using the same set of pads)
Accurate bpm detection/beatgrid algorithm (in Serato the bpm detection is hit-and-miss, which means you will have to edit the beatgrid)
High-quality FX, incl. the ever-handy Echo Freeze effect
Cuepoint comments
Quantized cuepoint jumping (whereas in Serato SmartSync disengages the moment you press a hotcue button)
Cuepoints and loops snapped to beatgrid (in Serato this is not the case)
Serato PROS
Elastic beatgrids, good for non-quantized music
Chronologic cuepoints
Cuepoint color coding
Smart playlists!! Saves a lot of time when importing new music
Reloop functionality
Flip
Easy beatgrid edit mode
In the end, I stuck with Traktor on the basis of its superior implementation of some of the more fundamental features (autogain, sync, snap, loops). However, you need to be able to live without the smart playlists, which is a real pain in the *ss. And elastic beatgrids is really nice to have too, though not having it forces you to work on your manual beatmatching skills, which is not a bad thing.
Good luck.