Have you listened to the Stackoverflow podcast and ascertained Joel and Jeff's position on Software Architecture?
I'd classify what you are describing as a Senior/Lead Developer.
I'd hate to be on a team that is spoon feed classes. If you are spoon feeding functions you might was well fire the team and write the code. And collect a large bonus at the end. Seriously, unless it was an army of junior developers fresh off the college nipple, what's the point of being a developer if you don't have leeway to be creative? Anyway, who in their right mind could keep all the classes in a large application straight. Diagrams and UML do help, but you get to a point where it's too much for one person.
When I assigned tasks to other developers, it would depend on two things: their availability and skill set. It also depends if the work is on the critical path or not as whether I assign a task to a developer. A less reliable developer wouldn't get tasks on the critical path, as a more reliable developer would.
When I design software I do it as a team. Each member of the team contributes to the design regardless of their skill level. This creates buy in for each member of the team. They are now a part of something and has intrinsic motivation to see the success of the project. Each member brings experience (or lack of) to the table that no one else has, it's what makes developers valuable: Their Experience.
I've seen good solutions become great. I've seen solutions created by experienced( 10 to 20 years) developers/architects, shot to pieces by junior and mid level developers, merely by the naive questions brought into the light.
If your project is large and interfaces with multiple systems across a vast company chasm, then you will need to bring in people who understand the vast intricacies of the system. On the same token this person isn't likely to have the skill set to design a solution at a class or function level.
In regards to doling out task it depends on what paradigm you use (SCRUM, LEAN Kanban). SCRUM has daily meetings, typically tasks are pushed onto the team. Estimates are given. Lean on the other hand uses a pull system. There is a queue of tasks. When a developer is done, they "pull" the next task from the queue.
There is a DotNetRocks episode that talks about how to manage large teams. From what I remember critical mass is 7 to 8 team members to each Project Manager/Lead Developer. If you are in charge a large number of projects, then you would meet with each Project Manager/Lead Developer to get a status update and give them tasks to dole out.