SCCM is a Microsoft product, which of course means it ties in very well with Windows environments, especially enterprise environments, but SCCM 1906, released in 2019 (more on that in a bit) and other recent versions support clients running other operating systems. Puppet is an open-source product that can manage Linux, Unix, Windows and even and Mac OS environments, though of course it cannot match the abilities of SCCM on Windows.
And a great benefit of this infrastructure-as-DSL-code approach is that you don’t have to worry about OS-specific commands and keywords.
The philosophical differences and capabilities of SCCM and Puppet are symptomatic of a broader configuration management scene that’s moving at breakneck speed where innovation is concerned.
If you have to make a choice between Puppet and SCCM, first detail what your needs are, then look for the tool that best fits those needs.