Yes, yum can be configured so that it forces co-installed 32-bit and 64-bit versions of the same package to have the same epoch:version-release, and that option ('protected_multilib') is enabled by default. You could consider disabling it in your yum.conf, which, of course, Puppet could help you do. That does not override general conflict detection, however, which could still be in play, nor normal dependency resolution. And, really, having mismatched library versions seems a little dubious to me, but perhaps allowing it as a transitory state would make for smoother integration with Puppet.
It is conceivable that you would benefit from setting yum's 'multilib_policy' option to 'all' to automatically install all available architectures of each package, instead of, by default, only the one that best matches the machine architecture. The former was the default configuration in EL5, whereas the latter became the default in EL6. I don't think that will directly address your current problem, but it, too, might make for smoother integration.
As an ongoing concern, if you have multiple architectures of the same package installed on a given system, then yum commands that give the package name but no arch will affect all packages of that name. Thus, updating just 'openssl' will update all installed arches of that package, whereas updating (or installing) 'openssl.x86_64' is specific to that arch of the package. And that's where you're running into trouble. Puppet's package providers manage a single package at a time (as it appears to them). In your case, then, even though you're managing both openssl.x86_64 and openssl.i686, Puppet attempts to perform a separate install / update for each. The separate installs work, but separate updates do not. You need to update both arches in the same yum run (supposing that protected_multilib is enabled), and the only way to do that in Puppet is to leave the arch off the package name.
John