Depends on the type of report. If it's a detail style report with few transforms I'll use entitycollections or dynamic lists. 
If it's a summary report with a lot of aggregates and nested queries and weird joins I'll put it into a typed view or sproc. 
Jeff