Как сказал Кивик, план выполнения такой же.
Оператор JOIN легче читать, что упрощает не забывать условие ON и получать декартово произведение. Эти ошибки могут быть довольно трудно обнаружить в длинных запросах с использованием нескольких объединений типа: SELECT * FROM t1, t2 WHERE t1.id = t2.some_field.
Если вы забудете только одно условие соединения, вы получите очень длинный запрос на выполнение, возвращающий слишком много записей ... действительно слишком много. Некоторые люди используют DISTINCT для исправления запроса, но он все еще очень длинный для выполнения.
Именно поэтому использование оператора JOIN, безусловно, является лучшей практикой: лучшая ремонтопригодность и лучшая читаемость.
Более того, если я хорошо помню, JOIN оптимизирован в отношении использования памяти.