I didn't see a great way to implement what I want, so this is the simplest stopgap to fill my need.
It is a separate plugin for the reason Jesse mentioned--to not add a git dependency to a generic plugin.
Long-term, it seems like it would be nice if builds had a method to return the branch(es) associated with a build without needing any SCM dependencies. I'm not sure that a generic interface is possible across all SCM systems, though.
In lieu of that, I think it would be helpful to write a plugin that has optional dependencies on several SCM plugins and provides the branch information for a build based on the SCM plugins it finds at runtime. Would such a plugin be possible? If so, then copyartifact could come to depend on it, or another plugin similar to copyartifact-git could expose a selector based on it.