As subconsultas são a maneira logicamente correta de resolver problemas da forma "Obter fatos de A, condicional aos fatos de B". Nesses casos, faz mais sentido lógico colocar B em uma subconsulta do que fazer uma junção. Também é mais seguro, no sentido prático, já que você não precisa ser cauteloso ao obter fatos duplicados de A devido a várias partidas contra B.
Na prática, no entanto, a resposta geralmente se resume ao desempenho. Alguns otimizadores sugam limões quando recebem uma junção versus uma subconsulta, e alguns sugam limões de outra maneira, e isso é específico do otimizador, específico da versão do DBMS e específico da consulta.
Historicamente, as junções explícitas geralmente vencem, portanto, a sabedoria estabelecida de que as junções são melhores, mas os otimizadores estão melhorando o tempo todo e, portanto, prefiro escrever consultas primeiro de maneira logicamente coerente e depois reestruturar se as restrições de desempenho garantirem isso.