This behavior is really quirky.
It seems if a defined type is restructured to include the noop parameter, you get the expected behavior described initially in the ticket (ie a noop overwrite). Without restructuring the defined type, noop => false will not take precedence over what is set in let's say site.pp. This could be due to an issue with the way noop is being "inherited" by the resources with the defined type. I am using inherited pretty loosely here, as this isn't actually the way this works.