Osobně daleko nejlépe hodnotím možnost použít INSERT, UPDATE a DELETE v CTE. Díky tomu lze řešit spoustu věcí, na které byly třeba stored procedures.
Namátkou např. autoincrement v updatable pohledu sestávajícím se z více tabulek, nebo smazat data z jedné tabulky a zároveň ji vložit do druhé.
Druhá možnost je IMHO obzvlášť užitečná, protože když to chtěl člověk dřív dělat dvěma kroky a neměl repeatable read, tak musel řešit, aby toho nesmazal víc, než vložil.
Co mě v poslední době v postgresql chybělo.. teda spíš přebejvalo :-)... jsou různý omezení na rekurzivní CTE (např. zákaz limit, omezený možnosti joinování apod.)