Eles retornam os mesmos resultados porque são semanticamente idênticos. Esse:
select *
from A, B
...é uma sintaxe ANSI-89. Sem uma cláusula WHERE para vincular as tabelas, o resultado é um produto cartesiano. Que é exatamente o que a alternativa oferece também:
select *
from A
cross join B
...mas o CROSS JOIN é a sintaxe ANSI-92.
Sobre o desempenho
Não há diferença de desempenho entre eles.
Por que usar ANSI-92?
A razão para usar a sintaxe ANSI-92 é para suporte a OUTER JOIN (IE:LEFT, FULL, RIGHT) -- a sintaxe ANSI-89 não tem nenhuma, então muitos bancos de dados implementaram seus próprios (que não porta para nenhum outro banco de dados ). IE:
(+)
da Oracle , =*
do SQL Server