A very interesting topic.
IMO Sprocs are not a great strategy for an application that needs to be able to work againtst multiple RDbMS'. In fact, I think that LINQ is trying to answer what I have seen in several products - a RDbMS-independent layer above the database.
I too am uncertain as to the architectural wisdom of locking database logic into code, but I think that most product vendors would already be forced into something like this by the demands of using only SQL-92 compliant statements, and making certain RDBMS
tweks at runtime.
Besides, prepared statements/meta-data can give you a lot of the non-compiled support you would get out of sprocs.
my two cents.