Well I now understand what you’re looking to do. However, based strictly on the way you lay it out, I’m not sure how it can be done in WordPress without changes to the core, or building a full work-around solution.
Basically at issue here:
WordPress is all about hierarchy when it comes to theme templates. With an author query, it checks for the author template (author.php). When it’s not there, it moves to the next template in the hierarchy (in this case archive.php). This can be bypassed and another template substituted at any point, but to have an author template while using something other than that for your secondary ‘just the posts’ display on author queries, requires a method of notifying WordPress (or a plugin, or whatever) an alternative template is desired before overriding the default template handling.
For ‘notification’ typically with links it’s handled through a GET query. An example of a GET is:
/?author_name=foo
(Note that custom permalinks providing a *virtual* directory like /author/foo just hide the GET string.)
WordPress knows ‘author_name’ (or ‘author,’ which passes the user ID) equals author template. A way to fool WordPress into using the archive template is to append an archive-related query var (variable) to your GET:
/?author_name=foo&year=2005
(/author/foo/?year=2005 works as well)
Again it’s about hierarchy: author queries default to the archive template (if author.php does not exist), so the archive template trumps author in the hierarchy. Problem here is, you can only specify a range of posts by date. There’s no way to call *all* posts and retain the archive template.
We could create our own GET var, let’s say ‘view’:
?author_name=foo&view=archive
Now we can write a plugin which looks for the ‘view’ GET query var, and when its value is ‘archive’ reset the template in use for the author query to archive.php. Simple, right? To a degree it is, but WordPress as a whole will not be aware of this query var of yours. It won’t know to attach it to next/previous pagination links and the like. If you display all of an author’s posts on a single page this may be enough. But if not… And the author links will either need to be added manually, or a separate function written to provide the appropriate query.
Any way you go about this probably require some compromise. So if I might modify your request, here’s another possible way to do what you want:
Allow the author.php template to display just posts (or posts with a small amount of author data). Then within a Page (i.e. Write > Write Page) set up your author profiles. The profiles can be entered into the Page content manually, but a better method is to use a Page template that calls the author profiles dynamically. As it happens, I’ve already written such a template.
All Authors Page Template for WP 2.0 here:
https://guff.szub.net/source/page-authors-2.0.php
All Authors Page Template discussed here:
https://www.ads-software.com/support/topic/34752
The template could even be fancied up to display only one author profile at a time through use of a custom GET query as mentioned above (would require some mods to the Page template’s source, of course). So a link of say:
/authors/?name=foo
would tell the Page to display only the profile of ‘foo.’ I think this comes close to what you’re looking for.