ECMAScript 5.1 norma rozdział 12.6.4 (na pętli for-in) mówi:
Właściwości wyliczanego obiektu można usunąć podczas wyliczania. Jeśli nieruchomość, która nie była jeszcze odwiedzana podczas wyliczania, zostanie usunięta, nie będzie odwiedzana. Jeśli nowe właściwości zostaną dodane do wyliczanego obiektu podczas wyliczania, nie ma gwarancji, że nowo dodane właściwości zostaną odwiedzone w aktywnym wyliczeniu. Nazwa właściwości nie może być odwiedzana więcej niż raz w żadnym wyliczeniu.
Myślę więc, że jest jasne, że kod OP jest legalny i będzie działał zgodnie z oczekiwaniami. Dziwactwa przeglądarki mają wpływ na kolejność iteracji i ogólne instrukcje usuwania, ale nie na to, czy kod OP będzie działał. Generalnie najlepiej jest usunąć tylko bieżącą właściwość w iteracji - usunięcie innych właściwości w obiekcie w nieprzewidywalny sposób spowoduje, że zostaną one uwzględnione (jeśli zostały już odwiedzone) lub nie zostaną uwzględnione w iteracji, chociaż może to lub nie, w zależności od sytuacja.
Zobacz też:
Żadne z nich nie wpływa jednak tak naprawdę na kod OP.