Erik Darling explains an important difference:
When you use views, the only value is abstraction. You still need to be concerned with how the query is written, and if the query has decent indexes to support it. In other words, you can’t just write a view and expect the optimizer to do anything special with it.
SQL Server doesn’t cache results, it only caches raw data. If you want the results of a view to be saved, you need to index it.
And naturally, those indexed views are different from materialized views in Oracle/PostgreSQL but that’s a topic for another day.