One of the goals of the project is reproducible builds. This means that, if I check out an old version of Chrome, I should be able to compile it and get the same result as someone compiling months ago when that version was tip-of-tree. We're not very good at that, but watch out for things which make it worse.
In particular, if you download artifacts during the checkout process via "gclient hooks", those artifacts need to be content-addressed. When the artifact updates, a file inside the source repo needs to also update to point to the new version. That way, when you try to build an old version of Chrome, you also get the old versions of the artifacts which aren't stored in the build tree.
As a result of this goal, we don't generally store small, human-readable artifacts outside the build tree. Something like plugins_win.json is small and easily maintainable. Replacing it with a one-line file containing a hash of a json file in google storage doesn't meaningfully reduce the size of the repo, doesn't reduce the number of commits to the repo, and unfortunately does reduce the readability of changes to the file. So I would not use an outside-the-tree solution for that file. Automating the updating of it, however, seems like a great idea, and could be done along the lines of any of the autorollers which manipulate the DEPS file.
The HSTS list, on the other hand, is huge. It also doesn't directly affect the build, as far as I know -- someone building an old version of Chrome with a new HSTS list isn't going to fail any tests or introduce any security problems. So that seems like a good candidate for being stored outside the repo and fetched via gclient hooks.