I'm currently using Puppet Enterprise (under 10 nodes) on my personal network. I've run into some of the same issues that you have.
I run Kubuntu on my desktop, which works perfectly as an Ubuntu derivative. I've used KDE Neon (another Ubuntu derivative) briefly in the past too, and from what I recall, it was fine.
Pop!_OS was not fine, as even though most Puppet modules would have worked just fine, it identifies as Pop instead of Ubuntu, so most modules just bail. I abandoned Pop!_OS partially because of that (along with other reasons).
I've also tried to use Puppet on Raspbian, using the Ruby agent, and it's got similar problems to what you describe. The Facts OS hash just doesn't quite match what stock Debian does, so a few modules I've tried to use don't work right.
How do I fix all this? Change my OS usually. On my desktop, I stick to OSs that PE supports. And I'm thinking of changing my RPIs to Ubuntu, rather than Raspbian. And I run a couple VMs using CentOS.
I've also forked a module before and patched it for Raspbian compatibility for myself. Another time, I just had to install the `lsb-release` package to get the OS facts hash to a place where the module could use it.
All in all, since this is my personal network, I'm pretty flexible with what I can do; changing an OS isn't a big deal. I generally don't have hard requirements that I have to meet.
At work, where I also use PE, we stick to Ubuntu-proper, and CentOS, mostly as headless VMs (not desktops). But that's for wider compatibility reasons that just PE.