Cache backends are tied to a specific bin, whereas cache tags are global. Currently each instance of cache backends has to deal with this - in the case of the database backend via static class variables.
We should separate out the cache tag management from the cache backends. However it's also not going to be reliable to have a single cache tag handler - some can use the checksum mechanism that's used for database (and likely memcache) regardless of storage of the cache items themselves, but it'd also be valid to have a varnish cache tag handler doing expiration directly in varnish via regexp, so need to allow for sites that have both.