Using the latest source code, restore fails if a page contains a pivot control that is not named. Adding an "x:Name" works around the problem.
Yes, I should have named it if I wanted it saved (which I did), but the code shouldn't die (in case I didn't).
The failure is in the last line below in PhoneApplicationPageExtensions.cs:
public static void RestoreState(this PhoneApplicationPage page)
if (page.State.Keys.Count > 0)
pivotToRestoreTo = page.ChildrenOfType<Pivot>().First();