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 hint-less 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 Union-all seems to benefit there.