Looking at the MSDN documentation, I believe the SourceFiles parameter requires an ITaskItem[] value. See MSDN MSBuild Copy Task
The last example on the above link is to do a recursive copy from one directory to another, maintaining the folder structure.