I'm definitely +1 on buildpack on a deployment basis. Maybe one could configure a default buildpack for an application, but a deployment should be able to use a different one; e.g. testing new stuff, or having a new buildpack available for staging while using the old one on production.

I don't see, why there are issues changing an associated buildpack for a deployment?
I mean, if you are retrieving the buildpack to figure out whether it changed, then you could also use a completely different one, no?