Investigated further and have realised that the problem is not with the array.contains action, but with reading the content of the global array.
As you can see in the attached picture, the EventsCondition global array contains 4 values ("Blue","True","Night","0"), so to see why the array.contains wasn't working, I decided to retrieve the first value in the array and then compare it to my CondVariable (which contains "Blue").
Interesting result: Using Array.Get on EventsCondition is not returning "Blue" as expected in my Test variable (which I later compare to CondVariable), but "empty". Yet, in debug mode, you can see that EventsCondition does contain the 4 values!
In this case, I'm in an FSM that is 2 levels below the "top" level. A top level FSM has an array.for each action, which calls another prefab FSM, which also contains an array.for each, which calls this FSM prefab. As EventsCondition is a global variable, I don't think this should be an issue, but it's the only thing I can think of.
Any ideas?