Правильно ругается. Документацию читать надо, а не сомнительные комментарии к ней.
Выражение при использовании операторов ALL, SOME, ANY может быть только и исключительно набором данных, а не набором скалярных значений. Применительно к SQL Server - только подзапросом. Можно, конечно, попробовать использовать функцию, возвращающую набор данных, но сильно сомневаюсь, что получится.
ALL (Transact-SQL)
Так что синтаксически правильно так:
Select *
from Employees
where [Employee ID] != ALL ( SELECT 90 UNION SELECT NULL );
Хотя и неправильно логически - наличие в списке NULL однозначно приведёт к пустому набору данных.