{{(str 1M)}} produces {{"1"}}
{{(str {:a 1M})}} procuces {{"{:a 1M}"}}
The suffix is lost because {{str}} calls {{.toString}} directly: {{java.lang.BigDecimal}} does not know anything about {{M}} suffix.
.toString
on map calls {{RT.print}} and that recursively calls {{RT.print}} for keys and values. {{RT.print}} has a special case for {{java.lang.BigDecimal}}, so it prints the suffix.