I found an explanation of how System Restore works that might have a clue to the problem, but it doesn't sound as if there's a work-around or fix (I'll keep looking):
"By designed and under normal conditions System Restore will automatically create a new restore point every 24 hours.
When the allotted disk space is reached, the oldest restore point will be purged on a first in first out (FIFO) basis. Otherwise, restore points over 90 days are purged automatically by default.
Each one of these restore points are chained (or linked) together with previous restore points. When a restore point is chosen, all restore point created prior to that restore point are also required to complete the restoration.
While all of this is going on, in real time, a log is being created or updated that tracks the consistency between the files System Restore is monitoring, and the files that are actually backed up. If an inconsistency is found between the log file and the files located in the System Volume Information folder, restore point corruption can occur. In turn this causes the chain to become broken and any prior restore points to become useless, thus causing System Restore to fail at a restore. At this point all restore points would have to be purged to remove the corruption. So you can see, backing up and restoring restore points would cause an inconsistency in the restore log thus causing corruption and the loss of all restore points.
Note: Any changes made within the System Volume Information folder (where System Restore stores restore information) will almost certainly cause the same corruption."
added: only tip I could find was to try running System Restore from Safe Mode.