Current setup
ATM git-annex has
remote..annex-cost remote..annex-cost-command # command is not provided cmdline options by annex
to set the cost for a given remote. That requires setting up one of those variables per each host, and possibly hardcoding options for the annex-cost-command providing e.g. the remote name.
Suggestion
wouldn't it be more general and thus more flexible to have a repository-wide
annex.cost-command
which could take options %remote, %file and assessed accordingly per each file upon '--get' request to allow maximal flexibility: e.g. some files might better be fetched from remotes supporting transfer compression, some from the web, etc. Also it might be worth providing %remote_kind ("special" vs "git") to disambiguate %remote's?
Then remote.name.annex-cost-command and annex.cost-command would not be able to be set to the same value with the same result. That is an asymmetry that no other pair of remote.name.foo and annex.foo have.
I think it's better to avoid such asymmetry.
(Also the idea of different costs for different files is right out, that would make it sloooow.)