How to manage many-to-many relationships when there is also a hierarchy among the many?
Martin,

If I am understanding correctly, the employee can be associated with one or more tasks, phases, and projects.  This implies a many to many relationship between an employee and a task, phase, or project.  If this is the case, throw out the idea of the assignment table completely.  Instead, create three different junction tables that can be used to establish the many to many relationships:  EmployeeTask, EmployeePhase, and EmployeeProject.  

The Task, Phase, and Project tables will allow for relationships to be established as you have defined in your post.  The three junction tables will enable an employee to be included in the hierarchy at any of the three levels.  

Your SELECT statements will require LEFT OUTER JOINS with the junction tables to pull back the appropriate employee information, which is fine.  Adding the junction tables will provide a much more normalized database design.