materialized view - создаёт вполне реальную структуру, где будут лежать данные на момент создания. Если в активной таблице их менять, то во вьюшке они не изменяться. Ну возможно физически они как то привязаны к версии данных из актуальной таблицы, но не суть.
with - просто синтаксический сахар для удобства написания запроса. Хотя и позволяет делать вещи не возможные при обычном написании запроса.