Old topic but still relavent...
In my previous job, I always used CTEs and they were much faster when compared to temp tables.
In the current place, strangely enough Temp tables almost always win by a mile.
Trust me; what I say is true.
Otherwise, in both places I have been writing Procs for SSRS reports against very similar databases in terms of volume, size and indexes.
From a processing engine stand point would it matter as to how servers are configured, so as to differ in how CTEs and Temp table execution is considered.