ハマったので書き残しておく。
例えば、グローバル変数g:fooにsourceしたいファイルのパスが代入されているとして、普通にsource g:fooとするとg:fooがそのままファイル名と解釈されてエラーになる。
let g:foo = "/foo/bar.vim"
"error E484
source g:foovimscriptの式の結果をファイル名として渡したいときは、式を`= ~ `で囲んでやればいいらしい。
source `=g:foo`参考
:help `=