Update table with greatest value from itself and another table
I would update with a join to a derived table. This would likely perform better than your subselect as well as be more intuitive to read (in my opinion, at least).

UPDATE a
INNER JOIN (
    SELECT
        id,
        MAX(`date`) AS max_date
    FROM b
    GROUP BY id
) AS max_dates
    ON a.id = max_dates.id
SET a.maximum = GREATEST(a.`date`, max_dates.max_date)