The challenge is that if you have life cycle phases (design, build , release) split into workstreams the Workstream manager will find his activities in several places in the plan rather than being neatly grouped together. If alternatively you plan by Workstream then establishing life cycle/ stage control points (e.g. requirements agreed, design agreed, build completed etc) then you must look across across multiple workstreams.
I have a 3rd alternative that is you plan by Workstream with each workstream having its own life cycle milestone (design, build, deliver) however there are additional project governance stages agreed with Sponsor at agreed intervals and you agree what will be reviewed/ due here at each governance stage .e.g at 1 meeting it might be the technical design that is due to be confirmed. Then at a later stage it is the marketing design being agreed. And another stage may agreed the Training design. etc. Saving Changes...
Andrew, We sometimes use the term "thread" as you use the term workstream (and it's shorter to type :). It's the end to end development of one thing out of many. The types of phases I think you are referring to often involve project "gates", where a sufficient level of maturity is required to go to the next phase such ready to show potential clients, ready to commit labor resources, ready to release, etc. Those gates try to align the maturity of the different threads so that when plan A changes plan B requires less rework.
While you might not think you know about interfaces, you just mentioned several. You don't know the *details* of them yet but you know they exist. It is a critical function of the PM to know not the details themselves, but *when* those details must be known because one thread will eventually affect others. Where some of those critical details need to be known become where the gates are placed in an overall gated plan.
Since we have designers who are the experts in their own thread, we develop each of their end-to-end plans for how to design a piece of the product, and then align those threads to gates creating a critical path.
It might sound like something for very big programs but it scales very well. It can be done very robustly, or very simply for smaller projects with only a few threads. It has surprised me throughout my career how broadly the principles apply. Saving Changes...