I think there is a bug in the code for the UninstallPackage.aspx.cs file on line 210.
The foreach loop only iterates through the first set of items in the xitems array, but most packages have multiple entries in the xitems array, so the uninstall is missing items.
Issue:
foreach (EntriesXitem aItem in projectInformation.Sources[0].xitems[0].Entries)
Change to:
foreach (projectSourcesXitems sources in projectInformation.Sources[0].xitems)
{
foreach (EntriesXitem aItem in sources.Entries)
{