If he has different items with the same names in the folder than you have, that would be a source of this difficulty.
To be certain, create a backup of your assembly - this will place copies of all the parts and assemblies into one folder. Send that. Have him place the contents in it's own folder and remove any search paths from his config. Then he can set his working directory to that directory and tryopening the assembly.
If it works, and it should, then it's a matter of tracking down parts that are not the same, but have been given the same name.
An experience of mine was similar when two different workers called an item Plate. Depending on which Plate got opened, one of the sub-assemblies would fail, having gotten the wrong Plate. This is the reason for Intralink and PDMLink; to prevent same-name, different item conflicts.
It could also be that he has the correct files, but old versions.