
You might also try recreating the "fifteen" table as an IOT and analyzing it, which would probably be the practice if it were implemented ... my local results (10g)
Code:
union all dual 11
table of integers 13 (heap table)
collection type 9
table function 25
pipelined function 17
group by cube 1743
... and ...
Code:
union all dual 11
table of integers 8 (analyzed IOT)
collection type 8
table function 20
pipelined function 12
group by cube 1702
I also tried a hintless version of all the queries, and got ...
Code:
union all dual 8
table of integers 7
collection type 7
table function 20
pipelined function 14
group by cube 1717
The Unionall seems to benefit there.

So much for hints then :(
Thanks for suggestions Dave, good stuff.