c'erano un paio di errori nel primo codice...
1) >XmlNodeList k = source.GetElementsByTagName("Paperone");
la variabile source che era diventata sorg e non l'avevi cambiata
2) >XmlNodeList k = source.GetElementsByTagName("Paperone");
io utilizzo VS 2010 e la ricerca è case-sensitive, ma credo che questo ed il primo "errore" siano degli errori fatti mentre trascrivevi il tuo programma togliendo tutti i riferimenti reali... 
3) >for (int i = 0; i < k.Count ; i++)
usavi sempre k.count per il tuo for, ma una volta che eliminavi un nodo, il valore di k.count diminuiva di 1... quindi, visto che c'erano 12 occorrenze di "paperone", nel momento in cui i arrivava a 6 k.count valeva 6 e quindi usciva dal ciclo, ovviamente quando stampavi, non eliminavi gli oggetti e quindi il k.count rimaneva sempre a 12... 
4) >k[i].ParentNode.RemoveChild(k[i]);
devi sostituire il k[i] con k[0] perché arrivato al 7° elemento della lista da eliminare, generava un errore per lo stesso motivo del punto 3.
ecco il sorgente che funziona:
string sorg = args[0];
XmlDocument dest = new XmlDocument();
dest.Load(sorg);
XmlNodeList k = dest.GetElementsByTagName("paperone");
int cont = k.Count;
for (int i = 0; i < cont; i++)
{
// Console.WriteLine(k[i].InnerXml);
k[0].ParentNode.RemoveChild(k[0]);
}
dest.Save("out.xml");