If there exists an id executable in a PATH Puppet is aware of when it runs on a Windows system that executable will be called when Facter tries to evaluate the gid fact.
For example, if I have an ID.EXE installed on the system, it will be called. If ID.EXE launches a graphical application, until the window is closed the Facter run is effectively held and will not continue. I can get the same behavior if I create an ID.BAT file that launches notepad.
The problem seems to be that the most generic version of the gid fact is constrained only on the existence of an id executable, regardless of operating system family.