Il problema è sicuramente dovuto al fatto che nel codice iniziale si vede:

codice:
if(a.equals(v))
mentre nel codice poi postato successivamente di VoceArchivio/DVD/CD, si vede che non c'è un override di equals.
La serializzazione centra solo di "striscio". Siccome non hai fatto l'override di equals, resta quello in Object che si basa solo sulla "identità" degli oggetti. Fintanto che fai removeVoceArchivio(cd2); utilizzando lo stesso identico oggetto che hai inserito, nessun problema, lo trova (per Object è uguale essendo lo stesso oggetto).
Ma quando deserializzi, ottieni nuovi oggetti, e visto che hai tenuto il riferimento a cd2 .... questo non lo trova più.