> static arrays increase the chance for array bounds and OB1 crash bugs.

If you mean the Effect collection classes like EffectParameterCollection.... those are all based on Array and the Array.Length.  The only out of bound case possible is if the user themselves index outside of the array.  It will throw an exception just like it does in MS XNA.

If you mean this code itself...  yea... it could be based on List<> with a List<>.ToArray() at the end, but that would be at the expense of more garbage during creation.  I see no compelling reason here to do that.