I've always felt that buildpacks in Heroku / Cloud Foundry are the way to go as they offer a higher level of abstraction than Docker files. The resulting containers are often production ready with good default settings. In docker you are re-inventing the wheel more often than not.
With Dockerfiles you can achieve high level abstractions by using proven images and composing multi-stage build assets.
And then you can customize them with some lower level abstraction by in-line bash or independent scripts.
E.g. look at phusion/baseimage or phusion/passenger - they are production ready and with good defaults. But you also have an easy way to augument them with latest ffmepg compiled from sources to support some exotic format for video conversion worker.
I don't think I'd argue that you can't do what buildpacks do with Dockerfiles.
Basically, why do the work yourself? Especially if someone else will solve the weird problems and keep everything up to date with no effort on your part.
I know from personal experience that buildpacks maintainers have seen stuff you people wouldn't believe. Attack ships on fire off the shoulder of -02. gcc beams glittering in the dark near the Nokogiri gate.
My only criticism with Cloud Foundry/Heroku is that the buildpacks and app staging process are often bloated because they have to be all things to everyone for the common case. There are a decent set of cases where doing custom Docker builds is more advantageous than using buildpacks, however, with the Buildpacks (https://buildpacks.io) project, this may change.