Can plugin copy file into an asset source?
As you discovered, the way to go about this is with AssetsService::insertFileByLocalPath().

Not sure about the error you’re getting though. If you haven’t had any luck figuring that out, send your plugin over to support@buildwithcraft.com with instructions on how to reproduce, and we can look into it.