Der einzige Nachteil ist halt, dass sich der Create nicht die Spalten aus dem Select selber ermitteln kann.
Allerdings kann man ja auch vor dem return noch jede Menge anderes Zeug machen.

Ich habe da z.B. auch ein CALL auf ein RPG-Programm gemacht (man braucht ja keine Procedur dafür). Dies erstellt eine Tabelle in QTEMP (wegen der Parallelität) und der Return macht dann nur noch ein "select * from qtemp/mytable".
Der Nachteil ist, dass hier jede Dynamik (variable Anzahl Spalten) nicht möglich ist.