Вообще по общей логике javascript(исполнение слева-направо) IE тут прав, ибо по сути то:
var holder = {
i: 0,
toString: function() {
return this.i++;
}
}
var object = {};
object[holder.toString()] = holder.toString() + '';
object[holder.toString()] = holder.toString() + '';
alert(JSON.stringify(object));