It's all about causality. Consider two scenarios, both involving
three programs, A, B and C.
Scenario 1:
1. A is written.
2. B written, and makes use of A. You argue that B is a derivative
work of A.
3. C is written, and is compatible with A. B is clearly not a
derivative work of C, since it existed before C.
Scenario 2:
1. A is written.
2. C is written, and is compatible with A. C is not a derivative
work of A. If it were, most of the GNU programs would be
illegal, since they would be derivative works of non-free
compatible programs.
3. B is written, and makes use of the interface shared between A and
C.
In the second scenario, if B is a derivative work of A, it must also
be a derivative work of C, since A and C are equivalent. This
conflicts with scenario 1, where B cannot possibly be a derivative
work of C. In both cases, we have in the end an identical set of
programs, and the derivedness relations between them must also be
equal. The only solution is that B is not derived from either A or C.