This is because both values in your array transitionspoint to the same object. At runtime, you create one object with three different references ( transitionInitial, transistions[0]and transistions[1]).
transistions[0] transitionInitial. property "color". transitions[1] , transitionInitial transitions[0]. reset property "background-color".
, :
var rules = ["color", "background-color"];
var transitions = [];
for ( var k = 0; k < rules.length; k++) {
transitions[k] = {};
transitions[k].property = rules[k];
alert(transitions[0].property);
}