ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 5

If you are running your SQL with the "Execute Script (F5)" button, this is expected because DATE is not a SQL*Plus variable datatype. You can see that here if I run the SQL with SQL*Plus. SQL*Plus doesn't recognize the 'DATE' variable type so it doesn't see the variable at all. Toad creates it as a varchar and throws the error you see (which, admittedly, may be a bug because we should give the same error as SQL*Plus)

This "Execute Script" method of query/script execution in Toad simulates SQL*Plus.

Workarounds:

Declare :MAX_DATE as a VARCHAR2, and use TO_CHAR when setting its value.
Or
Run the SQL in Toad with "Execute/Compile" instead.

The differences between F5 and F9 are detailed in my rant here. Short version: F9 is almost always the way you should really be running SQL in Toad.