Ваш второй запрос на самом деле работает правильно.
Другие комментаторы, пожалуйста, исправьте меня, но я понимаю, что это коррелированный подзапрос. Таблица псевдонимов покажет, что на самом деле происходит. Ваш запрос эквивалентен этому:
SELECT * FROM Bar x WHERE x.BarID IN (SELECT x.BarID FROM #TEMP)
Для каждой строки в #TEMP вложенный выбор фактически возвращает текущее значение BarID из таблицы Bar, поэтому да, BarID в (BarID) имеет значение true, поэтому каждая строка в Bar совпадает, поэтому каждая строка возвращается.
Чтобы показать, что вы не сумасшедший, попробуйте
SELECT * FROM Bar WHERE BarID IN (SELECT NonExistentFieldName FROM #TEMP)
Это поднимает ошибку, я думаю, вы ожидаете.