Resuelvo el problema con sugerencias del optimizador, especificando el orden de unión exacto en el comando DELETE:
delete a, b
from b
STRAIGHT_JOIN a on a.id = b.a_id
where a.id = ?;
MySQL BORRARÁ b filas primero gracias a la sugerencia del optimizador STRAIGHT_JOIN.