Hi,
Ok, I understood the limitations. But why they are present here, and aren't present elsewhere?
Where are they not present? Can you show me an example in Sinclair BASIC that does what you want?

And is there a way to overcome them?
Yes and no.
There is, to my knowledge, no way to have a pin or port or any other register for that matter aliased into an array in a way that makes the pin/port automagically change when you write to the array. You need to write code that iterates thru the array and writes each port/pin individually and then call that routine each time you change the array. There might be a way (by specifying the absolute adress) to create a BIT array "overlaying" the port register adress space but then all the pins will be consecutive within the array, ie if Array[0] is PortB.0 then Array[1] will be PortB.1 and so on.

If you could explain a little bit what the purpose of this operation is perhaps someone will provide a workable solution.

/Henrik.