Why does SQL Server truncate my nvarchar(max) string in an expression?
It is truncating because the replacement_value parameter is being converted to the same data type as the check_expression.

From https://msdn.microsoft.com/en-us/library/ms184325.aspx

ISNULL ( check_expression , replacement_value )



  replacement_value must be of a type that is implicitly convertible to
  the type of check_expresssion.
  
  Return Types Returns the same type as check_expression. If a literal
  NULL is provided as check_expression, returns the datatype of the
  replacement_value. If a literal NULL is provided as check_expression
  and no replacement_value is provided, returns an int.