The problem is that Puppet implicitly does a 'save' after the changes it makes - if you issue a 'save' in augtool after the insert you mention above, you'll also get an error. The problem is that you've created a 'PermitRootLogin node, but that has no value attached to it; augtool knows that that's not valid syntax for sshd_config and refuses to save the file.
You'd have to do the following in augtool:
augtool> ins PermitRootLogin after /files/etc/ssh/sshd_config/#comment[. = 'PermitRootLogin yes']
augtool> save
error: Failed to execute command
saving failed (run 'print /augeas//error' for details)
augtool> set /files/etc/ssh/sshd_config/PermitRootLogin yes
augtool> save
and add that 'set' command to your changes array in the Puppet resource.
You'll also need to make sure that those changes (especially the 'ins') only happen if there is no PermitRootLogin entry yet, otherwise Puppet will add one on every run; you can use the 'onlyif' param for the augeas resource for that. All in all you'd wind up with something like this (untested) code:
# Create and set PermitRootLogin if it doesn't exist
# We need to insert + set to make sure the resource produces a syntactically correct sshd_config