Puede envolverlo en una subconsulta como esa. El problema es que MySQL no puede actualizar las filas que también está consultando. Esto hará que MySQL use una tabla temporal implícitamente para almacenar las identificaciones que desea eliminar.
DELETE FROM tasks
WHERE tasks.id IN
(
SELECT id FROM
(
SELECT tasks.id
FROM tasks
JOIN deadlines ON deadlines.id = deadline_id
WHERE DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW()
) AS taskstodelete
)