En general los SGBD (y en particular Oracle) hacen tantas optimizaciones internas que en la mayoría de los casos las diferencias de rendimiento son mínimas, por lo que si yo tuviese que decidir me decantaría por la opción más fácil de mantener, es decir, la más legible (que en sí es una condición subjetiva al equipo de desarrollo).
Sobre el papel, aunque ciertos factores pueden afectar (tablas muy grandes ralentizan más los JOIN, índices pueden acelerar, etc.), en general es más eficiente un JOIN, ya que en la cláusula WHERE entran en funcionamiento los índices y las cachés del SGBD, cosa que no ocurre con la Subselect, al no haber constantes ni rangos fijos en dicha cláusula (hablo del primer WHERE en el caso de la Subselect).
En resumen, yo me decanto por la legibilidad. Y en mi caso, también creo que la más legible y mantenible es la Subselect, ya que a la hora de hacer pruebas se puede ejecutar la subconsulta independientemente.