Yeah the optimizer seems to take some weird decisions...with Barry's and mine approach the optimizer knows much quicker than one of the two subqueries usually yields very few rows.
I'll use Barry's code for the system I am working on because it doesn't require DDL.