I've been thinking about
this
further:

Surely the argument about DataReaders isn't the cost of
opening the connection, it's the fact that the connection lives
much longer and hence reduces scalability?

One could make the argument that in fact getting a connection,
getting you data, and getting off as quickly as possible, is much
more important than the efficiency of DataSet's or otherwise at the
middle tier. It's generally a lot easier to scale out the middle
tier than improve the scalability of the database.