Should a project plan be based on requirements, use cases, or subsystems? Not an easy question to answer. After thinking a while about it, I come to the conclusion that it is not based on one of them but based on all of them, depending on what phase the project is in.
In the inception phase, the planning can't be based yet on one of these artifacts, since we don't know yet what will be in the release. The planning can only be based on general tasks such as elicit stake holder requests, identify requirements, ... The outcome of this phase is a clear and agreed list of requirements that will be included in the release. So requirement descriptions are limited to brief descriptions, just to make sure that all stakeholders have the same understanding of the requirements.
For the elaboration phase, it will depend on what elaboration iteration you are in. In a first iteration, you typically (for the selected requirements) try to find the new use cases, identify existing use cases that are impacted, identify the non-functional requirements that need a detailed elaboration, and assess the architectural impact. In this iteration you don't yet elaborate the use cases but limit the work to finding good use-case names and describing them briefly. So this first elaboration iteration will also be planned more task oriented.
After this first elaboration iteration, you should have a good view of use cases and non-functional requirements that need elaboration. In the second elaboration iteration you make a detailed description for them and do analysis and design of them (updating analysis and design models). This is best planned based on use cases and non-functional requirements. At the end of elaboration, it should be clear what changes of existing subsystems (components) and what new subsystems are required. At this stage you are able to make a detailed construction plan, planning different construction iterations.
Planning the construction iterations is the most complex since you also need to consider a logical order of doing the changes to existing subsystems and a logical order based on subsystem dependencies (first do the lower subsystems). Therefore, construction iterations are typically planned subsystem based. However, it can be that you still leave in the dimension of use cases or non-functional requirements for cases where you want to align your construction iterations with delivering completed use cases or non-functional requirements. Note that these type of construction iterations can only be planned in parallel if no changes are required in the same subsystems (or at least changes to a particular subsystem can be isolated or synchronized).