This is not the ideal answer that I was hoping for but it is a solution to the problem. As is turns out if you have Caja processor evaluate your HTML in Native mode, it won't do this '@' -> '%40' translation.
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);