In Visual Studio Team System 2008, the build machine downloads the files that it needs to launch MSBuild before it creates any workspaces. Because this initial "get" is before MSBuild is called, users don't get much say in what gets downloaded. By default, the build machine downloads all the files in the ConfigurationFolderPath of the build definition that is being built. You specify that path in the Build Definition dialog. Everthing at the root of that folder is then downloaded before the build starts.
The problem that some people have run into is that we only download the root of the folder. They have some assemblies or other specific build files that are nessesary in subfolders of that location. Luckily we thought of that. You can change the download parameters so that all subdirectories are downloaded as well. Be careful, however, if you specify to download everything, you will get everything under that folder that exists in version control. You cannot cloak anything out. Also note that this "fix" is per build machine, not build, and not build definition.
Here are the steps:
Log into the build machine that you want to change (you probably need to be an admin on the box).
Locate the TFSBuildService.exe.config file (most likely in "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies")
open it in notepad or some other text editor
Near the bottom (before the /appsettings closing tag) add the following line:
<add key="ConfigurationFolderRecursionType" value="Full" />
other values include OneLevel or None. OneLevel is the default.
That's it. I hope this helps!