Hola Santiago,
Hace no mucho hemos debatido sobre el tema. Te dejo el
enlace.
Uno de los principales puntos cuando uno está pensando en hacer encuentros, implícitos o no, es preguntarse sobre que vamos a hacer con los nulos. No es lo mismo hacer un LEFT o un RIGHT que un INNER o un OUTER. Como no es lo mismo que uno de los miembros tenga o no nulos.
En el
siguiente artículo de CodeProyect se ilustra el porqué no son la misma cosa.
En cuanto a rendimiento, la regla general dice que los encuentros tienden a ser más rápidos ya que se aprovechan mejor de los índices (si los hay).
Un encuentro cartesiano de tu ejemplo puede o no ser equivalente a un JOIN explícito. Todo depende de una serie de factores: índices, diseño del interpretador que posea el motor, si hay nulos y cómo presentarlos (al inicio, al final ó ignorarlos). Por lo general los motores tratan de convertir los productos cartesianos como JOINS, aunque es posible que no todos cumplan la regla.
Saludos,