Они не имеют в виду одно и то же.
name is not null
Проверяет записи, в которых поле имени равно нулю
isnull(name,'') <> name
Этот параметр изменяет значение пустых полей на пустую строку, чтобы их можно было использовать при сравнении. В SQL Server (но не в Oracle, я думаю), если значение равно нулю и оно используется для сравнения равенства или неравенства, оно не будет считаться, потому что значение равно нулю, значит, я не знаю значение и, следовательно, не является фактическим значением. Поэтому, если вы хотите убедиться, что нулевые записи учитываются при выполнении сравнения, вам нужно ISNULL или COALESCE (это термин ASCII STANDARD, который нужно использовать, поскольку ISNULL не работает во всех базах данных).
То, на что вы должны смотреть, - это различие между
isnull(a.name,'') <> b.name
a.name <> b.name
тогда вы поймете, почему ISNULL необходим для получения правильных результатов.