Several reasons: If you have complicated joins, it is sometimes best to have a view so that any access will always have the joins correct and the developers don;t have to remember all the tables they might need. Typically this might be for a financial application where it would be extremely important that all financial reports are based on the same set of data.
If you have users you want to limit the records they can ever see, you can use a view, give them access only to the view not the underlying tables and then query the view
Crystal reports seems to prefer to use views to stored procs, so people who do a lot of report writing tend to use a lot of views
Views are also very useful when refactoring databases. You can often hide the change so that the old code doesn't see it by creating a view. Read on refactoring databases to see how this work as it is a very powerful way to refactor.