I have used SubSonic on a number of my projects and would argue that SubSonic scales exceptionally well. SubSonic like most technologies can be used for good or evil.... Say for example you have some table on a page with a gazillion columns and gobs of rows. You could write a Stored Procedure to get the data (SubSonic creates wrappers around all of your stored procedures), you could create a View in the Database so that if your DB is smart it can optimize the views performance (SubSonic creates a class for each of your Views as well as Tables).
Lets say you use a view and don't want any of the overhead of a collection of objects, with Subsonic you can just get an IDataReader for your View(If that isn't fast enough for you I don't know what is).
On the other hand lets say in the same app you also have 5 or so tables with only 3-4 columns and 10 or so rows used for administration and configuration. You can now use one of SubSonics nifty controls (namely the Scaffold control) which will create a GridView with built in Edit/Add/Delete/Sorting functionality for the table by just dropping it on the page.
SubSonic has a lot of time saving functionality built into it and when you want to do it your way(every now and then we all say my way or the high way!), SubSonic will allow you to do it your way.