It is generously easier to use DataSet. We can use automatic paging. We can sort and filter DataSet using DataView. DataSet is excellent for dealing with small recordsets. DataSet can be cached and used more than once though do not forget to refresh the cache when updated. Large recordset is a problem because DataSet will load the entire recordset into memory.
We needs a little bit more code with DataReader if we need paging and sorting. We have to sort in the SQL server. We can only use custom paging when we build to DataReader. Also, all the automatically generated bound columns are read-only in edit mode.