The problem is that a struct is handled as a value type, not as a reference type.
This means that a copy of _stop is made and put in btns (btns[3] actually).
So what you need to do is putting pointers into the btns array:
SCENARIO* btns[4] = { &_red, &_yellow, &_white, &_stop};
The symbol * denotes a pointer, and & means the address of a variable (so it points to the variable and is not a copy).
Now when you change _stop, also btns[3] which points to _stop will show the correct initialized value.
For printing you should use:
Serial.println( (*btns[i]).LampPin);Serial.print(":");
Serial.println( (*btns[i]).PB_Pin );
Because *btns[i] is a pointer, but because this is a very often used feature, a special notiationnotation can be used:
Serial.print(btns[i]->Lamp_Pin);Serial.print(":");
Serial.println( btns[i]->PB_Pin);