If you use Puppet's standard Service resource to manage your service then no, you cannot cause Puppet to assume a different user ID to execute the service management commands. But that should not be necessary. Which user a service runs as should be a matter of that service's configuration, not of the UID of the process that starts it. Indeed, it is typically necessary for a privileged process to handle service startup in order to enable services to assume the correct user identity.
If your home-built services don't know how to set their own UIDs then they are deficient. Whoever is responsible for maintaining them should be introduced to the setuid() family of functions. In the mean time, you may have no alternative to using a wrapper of some kind (an upstart script, for instance).
Note, too, that this is not fundamentally a Puppet problem. You will have the same issue if you want to configure your services to start automatically (as the desired user) at system startup, for instance.
John