Eu resolvo o problema com dicas do otimizador, especificando a ordem de junção exata no comando DELETE:
delete a, b
from b
STRAIGHT_JOIN a on a.id = b.a_id
where a.id = ?;
O MySQL DELETE b linhas primeiro graças à dica do otimizador STRAIGHT_JOIN.