I think I've found the solution for this issue by using the intermediate output of the QZ algorithm.
[AA,BB,Q,Z,V,W] = qz(A,B,'real'); % in my case I think 'real' is safe, still needs a check
Right generalized eigenvectors are rows of W transposed. Eigenvales are:
D(i,i) = AA(i,i)/BB(i,i);
I guess that the code in eig() doesn't check if BB(i,i) has an aprox. 0 value, and numerical precision due to a 0/0 made an extra non-zero eigenvalue appear in my example data.
Let's see if I'm wrong or if anyone has a different explanation. Hope this helps!