The ps command from the procps-ng project which is used on Debian and Ubuntu honours the environment variable COLUMNS: when set to a number, output lines are cut of at that many positions. The difference can be seen with these two commands:
$ COLUMNS= ps -ef > /tmp/env1
$ COLUMNS=80 ps -ef > /tmp/env2
So, if COLUMNS is set, then the process table is most likely incomplete.
I see this happening on our Debian "wheezy" systems, where COLUMNS exists in the environment in which the Puppet agent is started. Puppet apparently doesn't clean up its environment before it executes subcommands, so COLUMNS leaks through to ps resulting in an incomplete process table. And that causes problems with services that have hasstatus=>false and Puppet has to try to match the process in the process table, in our case a few similar services with patterns like 'rbldnsd.*spamhaus'.
The bug doesn't manifest on Ubuntu because COLUMNS is not set there.
I don't know about other operating systems.
The fix to this particular problem is that Puppet should delete COLUMNS from the environment before executing ps. But maybe a generic solution is better, in which Puppet sanitizes the complete environment before executing subcommands.