Вы правы относительно отношений между AsEnumerable и AsObservable в аспекте перехода от запросов на основе дерева выражений к запросам в памяти.
В то же время раскрытие последовательности Rx на основе субъекта очень распространено, и нам нужен был способ скрыть это (в противном случае пользователь мог бы привести к IObservable и добавить элементы).
Давным-давно в истории предварительных выпусков Rx у нас был отдельный метод Hide, который был просто псевдонимом Select (x => x). Нам это никогда не нравилось, и мы решили иметь место, где мы отклонились от точного зеркального отображения LINQ to Objects, и заставили AsObservable играть роль Hide, также основываясь на пользователях, которые полагали, что именно это и было с самого начала.
Обратите внимание, что у нас есть метод расширения AsObservable для IQbservable . Тот просто делает то же, что и AsEnumerable: он служит подсказкой компилятору забыть о режиме запросов на основе дерева выражений и переключиться на запросы в памяти.