As a rule, you choose to return a dataset if you want to filter, sort, or page through data after retrieving it or if you want to maintain a cache.
You use a data reader when you simply want to return the data and are using a control on the page to display that data.