Premesso che uso lo stesso sistema per sincronizzare il Nexus S con il Nokia 5800 e non ho il vostro problema, direi che il problema è nel metodo di sincronizzazione che usa l'iphone, che non "capisce" quando un contatto è già presente e lo duplica (e poi quadruplica, ottuplica, x16, x32...) ad ogni successiva sincronizzazione.

Oppure può darsi che una volta sincronizzato l'iphone con google, l'iphone applica una modifica in automatico a un qualche dettaglio dei contatti, così che alla successiva sincronizzazione, l'iphone lo scambia per un contatto diverso scaricando di nuovo "l'originale" da google e applicandogli di nuovo la modifica automatica succitata che causa il problema, e così via. In questo caso la duplicazione non è esponenziale (x2, x4, x8, x16) ma sequenziale (x2, x3, x4, x5...).

Ogni quanto spesso avviene la sincronizzazione, e con che velocità di duplicazione accade il problema?
Dovresti prendere uno dei contatti duplicati e confrontarlo con "l'originale" per vedere quale tipo di modifica automatica applica l'iphone per cui poi viene considerato un contatto diverso (mi verrebbe da pensare ad esempio ad un nome di 2 parole che viene spezzato in nome+secondo nome).

Una volta individuato il problema, si dovrebbe risolvere salvando il contatto su google con la "struttura" che piace di più all'iphone, in modo che poi durante le sincronizzazioni non avvengano più delle modifiche automatiche.