Jagdish,
If I understand correctly, you mentioned that you are building a custom provider based on samples ? That's great!
But by any chance have you turned on FileSyncOptions.CompareFileStreams ? If so, that could be CPU intensive. This option calculates the hash of each file it tries to detect changes on. So if you have large number of files, change detection would be busy calculating the hash for those file streams.
Is high CPU usage the issue or is it the high CPU usage for long time ? If it's the latter, maybe you can use a smaller batch size to see if you user experience seems more acceptable.
Hope this helps,
Sameer