I don't have an answer, but I tweaked your code (to make sure everything was initialised); and still got the same error.
Not sure if that's helpful though.

var
bools : array of boolean = (false,true,false,false);
boola: boolean = false;
boolb: boolean = true;
begin
bools += [boola or boolb];
. . .
I was trying to work out whether the problem was because you were comparing the same data...
I should also comment that I haven't encountered
{$modeswitch arrayoperators}
before! It sounds cool though.

If i replace the "bools +=" line with:
n := length(bools);
setlength(bools,n+1);
bools[n] := boola or boola;
(where n:integer;)
It runs correctly.
cheers
S.