I know a few architects (as in for buildings and civil structures) who wouldn't be able to pour a foundation, frame a wall, or run plumbing properly. They're working at a different level of abstraction and are concerned with different problems.
Or to put it another way, if you can code does that mean you should be able to design a CPU, even a very basic one? After all, how can you write a program if you don't understand how it works at the instruction, transistor, etc level?
Civil Architect is to Builder as Software Engineer is to Datacenter Technician. Software architect is to software engineer as partner at an architecture firm is to architect, or something.
You don't expect a plumber or a building constructor or a civil engineer to become an architect, they're different degrees or certifications. A software architect is normally considered a software engineer who works at a grander scope of design. That doesn't map correctly.
Architects that don't understand how to do the fundamentals of implementing the designs they make tend to make unrealistic designs, that are expensive to implement and may look pretty, but function poorly for the owners and occupants.
This applies to architects of buildings, architects of software, and architects of hardware. Probably to most high level design and supervision type positions.
Edit to add: many of the best architects of buildings are able to do amazing things specifically because they've studied the fundamentals and are able to do innovative things with materials. Of course, time will tell it the innovation worked out well or not.
waaaaat? That is completely utterly 100% unreasonable. Unless you mean that you expect every adult member of society to do those things?
And I'm not saying that everyone needs to do everyone's jobs. But you shoupd be able yo do at least a bumbling job of the layers of abstraction you work on top of if you want to make a decision in how those things should work.
Building codes change. Architects are required to design buildings according to the new codes. There is no such thing in software.
When I first started in industry, storing plaintext passwords in the database was what everyone did. We have moved on from that.
I've worked on j2ee web apps, where the EJB tier absolutely had to be on a separate server or servers. Times have moved on from there.
I've met very few "software architects" that have kept current without writing code at least 5-10% of their job.
In my company my 'enterprise architect' oversees at least 40 applications in my space in various languages and platforms (and he works in other spaces too so I can't give an exact number). I need him to give a good direction on what apps are needed, how apps talk to each other and certain detailed design. He also pitches to management and the business to defend how/why we do certain things.
Last thing he would be required to do is remember to write basic code (though I would hope he can do a swag).
You'd be surprised, but this is what computer engineering actually is. From p-n junctions and transistors and all the way to distributed systems.