Use the default base64 encoding for zipping and specify the response encoding in the end/write method:
Router.map ->
@route "data",
where: 'server'
path: "/data"
action: ->
this.response.writeHead 200,
'Content-Type': 'application/zip'
'Content-Disposition': "attachment; filename=data.zip"
zip = new JSZip()
zip.file "Hello.txt", "Hello World"
file = zip.generate({ 'compression': 'DEFLATE' })
this.response.end file, 'base64'