Same-named puppetlabs and example42 (and other) modules are different modules that (probably) manage the same subsystem. They are implemented differently, they usually provide slightly different feature sets, they may have different structure, and they probably name things slightly differently.
Example42 modules are well regarded, and their author can sometimes be found around here. Generally speaking, I would have no problem recommending them.
Puppetlabs modules are well regarded, and their authors can sometimes be found around here. These modules are supported by PL itself, and generally speaking, I would have no problem recommending them.
As to how to choose between similar modules from different sources, you should examine their respective documentation to see whether they provide all the features you need, and to get an idea of how easily each can be applied to your particular situation. You could even try both to see which fits better. Be aware that choosing one of those for one module may obligate you to use other modules from the same source (to correctly satisfy module dependencies). Strictly speaking, however, multiple sources are not necessarily mutually exclusive (for different modules).
John