I tend to like the flexibility of Solr wrt. fields and schema.
Even if you have a schema, Solr does not try to enforce it query-time, you kind of get the same transparent behavior as with Lucene, that if the docs you query contain the fields requested, you get them, if not you don't. You may modify your schema without re-indexing your content and still be able to retrieve fields.
And what if I choose to shard across two Solr's with different scemas - because I know they share the "id", "title", "body" fields. Could be a webcrawl core and a fileserver core. I may want to query on the title&body only, but ask for fl=id,title,url,meta_keywords,file_path and choose to render my web results using url and meta_keywords but my fileserver docs with file_path.
Have you considered dynamic fields?
Based on this I think this solution is not a good idea, at least it should be configurable and by default off.