Why?
I don't have a good answer.
  - Subqueries can be (almost always?) be rewritten as joins and set operations.
  
- Many query optimizers do exactly this, early on. 
  
- Lots of DBMS-specific debate about whether joins or subqueries result in 
      faster execution. 
  
- Some people find them easier to understand.
  
- Maybe because they so strongly suggest an
  implementation. Some people prefer more procedural (i.e., lower-level) code.