Regarding the if: Congrats, you found a bug!
Your assumption is correct:
The intention of templating the hdfs-site.xml etc was only to override necessary parameters, leaving out settings which are default.
So the design was to have puppet class parameters have the value undef, if the setting has not to be propagated to the output file, or set explicitly, where its value has to be set in the file.
If one is using <% if @parameter %> the block is inserted in template if the value is not false. In most occasions that was technically identically to not undef, until you found a parameter defaulting to "false".
The correct syntax is
<% if @parameter.nil? -%>
<% end -%>
and the default value in init.pp should be undef.
Would you mind issueing a new patch? We have to check other values as well.
Thank you very much for your contribution!