How about:
SELECT ST_Area(ST_Intersection(a, b))
/ ST_Area(ST_Union( a, b)) AS a_ratio
FROM
(
SELECT a.polygon AS a, b.polygon AS b
FROM spatial_table_a A
JOIN spatial_table_b B
ON A.tilename = B.tilename
OFFSET 0
) AS q
WHERE ST_Intersects(a, b);
This should force the query planner to first join the two tables on tilename and only then check if the two polygons intersect. That will give you a diffrent query plan but I'm not sure if it will be the query plan you're looking for.