What is different between G1×G1→GT and G1×G2→GT in the bilinear pairing?
The most general form of a bilinear map is $e : G_1 \times G_2 \to G_T$. We can categorize a scheme's usage of the bilinear map into 3 standard categories:

Type 1: in addition to the bilinear pairing, the scheme requires efficiently computable homomorphisms $\phi_{12} : G_1 \to G_2$ and $\phi_{21} : G_2 \to G_1$. In other words, the scheme sometimes needs to &quot;convert/cast&quot; a $G_1$-element to a $G_2$-element and vice-versa. This is the same thing as requiring that $G_1 = G_2$.

Type 2: the scheme requires an efficient homomorphism $\phi_{12} : G_1 \to G_2$. In other words, the scheme sometimes needs to &quot;convert/cast&quot; a $G_1$-element into a $G_2$-element (but not vice-versa).

Type 3: the scheme never needs to &quot;convert/cast&quot; between groups.


See Pairings for Cryptographers by Galbraith, Paterson, and Smart for more discussion about these types (especially section 2).
Type 3 is the most desirable since it places the fewest restrictions on the bilinear map. Type 1 demands a lot of structure from the bilinear map, and I think type-1-compatible groups/pairings are less efficient.