Because ISNULL is a function, it is evaluated only once. As described above, the input values for the COALESCE expression can be evaluated multiple times.
COALESCE basically translates to CASE expression and ISNULL is a built-in implemented in the database engine.
MSDN