At the moment only Napili template can be used to build community using Community Builder(Koa & Kokua do not support Lightning & have tons of limitations). Napili template itself has limitations. It doesn't work in Salesforce1 and doesn't support all of the objects(Opportunity flow, Orders)
force.com sites (Visualforce + customizations) has no limitations to customizations or object access. It also scales really well for upto ten million customers(& may be more if you are willing to pay). However creating jazzy look & feel takes more time & effort as compared to Community Builder.
Heroku and connect to SFDC using API and Heroku Connect doesn't work on Salesforce1. Typically, it takes more time to create a web app using Java as compared to Aex/Visualforce. Integrations are hard and bug prone. Lot's of out of the box functionality can not be leveraged(Reports & Dashboards, Chatter Answers, Knowledge, Ideas). Yes it might scale but do you really need ten million plus users?
Everything being else being equal, force.com sites (Visualforce + customizations) should be your default approach.