Yeah, that was the kind of thing that I was looking for.
I understand the comments regarding WHERE IN() being a crutch for beginners. On the other hand I think an argument could be made for the self-documenting nature of WHERE IN() over JOINs for the very reason that it is easier to read/understand.
The project I ran into this on had some rather complicated logic, which translated into many joins. The WHERE IN() clearly documented which joins were necessary to get to the data, and what was the "logic" for when a particular modification ran. Naturally, we could use the joins instead (in some cases we have to for performance); and use good comments to describe what is going on. I'm just always a fan of self-documenting code over comments when ever possible.
I was just caught by surprise by the gross discrepancy in performance, having thought that both were evaluated similiarly internally. But that idea may be a holdover from older platforms (Sybase/6.5). If I recall there was even something in the Sybase documentation describing under what conditions the WHERE IN(sub-query) would be translated to joins internally.
In any case, thanks to all for the input. I'll be a little more leary of WHERE IN() in the future.