Gostaria de saber onde está a diferença entre essas duas junções espaciais e, se houver alguma diferença, quando usar qual.
SELECT *
FROM points p, shapes s
WHERE ST_Within(p.geom, s.geom);
e
SELECT *
FROM points p
INNER JOIN shapes s ON ST_Within(p.geom, s.geom)
Um é mais rápido em determinadas situações?
JOIN
exclusivamente. Infelizmente, como está escrito, isso é mais uma questão pura de SQL, e isca de opinião nisso.