The main difference in both is ISNULL replace value of any column if it is NULL to something else
Select ISNULL(NULL,5) Result- 5
While COALESCE gives value of first not null coulmn
Select COALESCE (NULL,NULL,5,NULL) Result- 5
But Mainly we use coalesce where we want to get value of a column as a comma seperated values-
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
SELECT @listStr