Nicolas told me that the actual order for static dependencies in that example would also be that one :

(((B1 || B2); B) || ((C1 || C2); C)); A

However he points out that there's still a difference between static and dynamic dependencies : static dependencies can control the way rules are selected. If two rules can build a target but the first rule has a static dependency that cannot be built then the second rule will be tried. Dynamic dependencies cannot do that since once a rule is invoked it is considered to be definitively selected. 

Best,

Daniel