( A basic assumption of Relational Grammar is the "Stratal Uniqueness Law", which prohibits more than one instance of the same grammatical relation from appearing at the same level of analysis. 2PSG adopts this assumption also. I apologize for the "stratal" in the name of this principle, which I disagree with. I keep the name just to identify the theory from which I stole the idea. I think it is a deep truth about human language. In 2PSG, the SUL has the form of prohibiting more than one instance of any grammatical type in a phrase structure rule (or, rather, the counterpart of a phrase structure rule in 2PSG).
For instance, the structure of "John gives Mary a book" can be described as "S1 -> NP1 gives NP3 NP2", meaning that it is forthcominga declarative finite clause S1 with a subject NP1, a head "gives", an indirect object NP3, and a direct object NP2. The SUL prohibits multiple subjects, multiple direct objects, or any two instances of the same grammatical variable, as does the original SUL principle in Relational Grammar.
The indices 0/1/2/3 give the height in a phrase structure tree of variables such as S1, NP1, NP2, NP3, and S1 is the type of declarative finite clauses. In the above illustration, no part of the sentence is any higher than the sentence as a whole, but this needn't always be the case. Without any constraint to the contrary, we can also describe constituents containing parts less oblique than the containing constituent, such as S1 -> NP1 gives NP3 NP0 (for "John gives Mary what?" for instance). These are extraction constructions.
So finally I can come to the point. If we attempt to extract two NPs from a clause, in 2PSG they would have to be both NP0 in the clause structure, and this would violate the Stratal Uniqueness Law. This is my account of why two NPs cannot be extracted from the same clause. (For more detail of how the theory works, please see my earlier post.)