PKHeX tries to keep the ability bits from the original PID (lowest bit in each 16bit half of the PID):
In order to get a square shiny, the Xor has to be 0; since we keep both low bits as-is, the above PID has 1 and 0 for each bit; xor is always 1 -- so the shinyxor will never be 0 with this restriction.
I'll need to figure out how to relax this restriction -- PID ability is a little complex:
if (GenNumber > 5 || Format > 5)
return -1;
if (Version == (int) GameVersion.CXD)
return Array.IndexOf(PersonalInfo.Abilities, Ability);
return (int)((Gen5 ? PID >> 16 : PID) & 1);