NVL will do an implicit conversion to the datatype of the first parameter, so the following does not error
select nvl('a',sysdate) from dual;
COALESCE expects consistent datatypes.
select coalesce('a',sysdate) from dual;
will throw a 'inconsistent datatype error'