Существует, по крайней мере, разница с типами с оператором преобразования:
struct tobaz
{
operator baz&() const { static baz b; return b; }
};
Тогда
foo{tobaz()}; // Compile
bar{tobaz()}; // Won't compile
Поскольку может иметь место только одно преобразование пользователя.
Демо
Ошибка произойдет с другой стороны для структуры с operator std::reference_wrapper<baz>()
.