If I do a synchronizeWithArray(), the order of the elements in the array has to be the same as they are saved in the database.
Of course this can not be assumed in any situation, where you have reordered form-elements etc.
I would expect, if I add the IDs to the elements in the array, that the update-process is based on them and not on the element-order.
Please take a look at this old ticket: http://trac.doctrine-project.org/ticket/2097
The attached patch works really nice on the actual revision too.