Same thing happens to me. I've found some ways to improve it so that it happens less frequently, but there doesn't seem to be a perfect solution.
As far as I can tell, what's happening is one of two things: either the Google contacts are syncing after the Facebook contacts and overwriting the picture because Google thinks its data is newer, or the Facebook sync removes all the pictures every time and re-downloads them, but sometimes it fails before it's done.
If you don't care about using the Facebook features within your People app (such as looking at someone's photo album or seeing their birthday), and you really just want their profile pictures, then I'd suggest removing your Facebook for HTC Sense account and using the app SyncMyPix instead.
However, if you like the integration with Sense (as do I), then here are my settings which seem to help the pictures to not disappear as often:
1) Set the Facebook for HTC Sense sync frequency higher (4 hrs or even 2 hrs). The more often it syncs, the less data it has to send each time, so the less likely it is to quit halfway.
2) Turn off Google contact sync. Remember to re-sync it manually once in a while, though, so your contacts are backed up to the cloud.