All the solutions proposed are interesting.
However, would it not just be simpler to - as proposed by OP - to just store the MAX(date) into a local variable and simply write
DECLARE @d_MaxDate datetime2;
SELECT @d_MaxDate = MAX(SomeDate) FROM SomeTable;
UPDATE SomeTable SET IsMaxDate = CASE WHEN SomeDate = @d_MaxDate THEN 1 ELSE 0 END;
Just because it could be done in a single (more complicated) T-SQL statement might not necessarily mean it should be done this way.