Along with the messages you presented, Puppet should also be logging debug messages giving the external commands it is running. If it is not presenting any pertinent ones then that probably means it is using the Ruby library to obtain user information, as opposed to running an external command. For instance, it might be using Etc.getpwent(). I'm not inclined at the moment to dig through the code to find this for you, but you could do it yourself.
In any event, if Puppet is retrieving the wrong information, then you should be concerned that other programs will do, too. Or perhaps more accurately, you should be concerned that Puppet may be right about the initial state, and that its failure is in setting the desired target state. You should look at your user name service configuration in /etc/nsswitch.conf to determine whether your system is relying any other user information sources than just /etc/passwd.
You should also look at the agent's debug output to determine what provider is selected for User resources -- that's probably near the top or each run's log. Perhaps Puppet is choosing the wrong provider.
John