The root directive just sets a variable that can be used by other parts of the handler chain (for example, try_files or templates). If you use root inside the file_server directive, only that file server handler will use/know that root path.
In v2, the rootdirective supports a matcher, but the rootsubdirective of the file_serverdirective does not. i.e. Should work when you set the root for the whole site, shouldn’t work if you set it just for the file server.
file_server
Enables static file server, optionally with directory browsing.
Could be cool as an [INFO] output of some kind if there’s no terminating handler (i.e. a handler that generates actual content somehow and returns it).