Given the following:
SELECT ISNULL(\'XY\' + NULL, \'ABCDEFGHIJ\') -- Outputs ABC (Why?)
SELECT COALESCE(\'XY\' + NULL, \'ABCDEFGHIJ\') -- Outputs ABCDEFGHIJ
ISNULL() converts the replacement value to the type of the check expression. In this case, the type of the check expression is CHAR(2), so converting the replacement value truncates it (are you sure you're getting ABC and not just AB?).
From the Microsoft documentation:
replacement_valuecan be truncated ifreplacement_valueis longer thancheck_expression.