Hi Karim,
I wasn't aware before how this was supposed to work, but it appears ChucK treats a literal array as an array of the most specific type that encompasses all of its elements. Thats why an array of [SinOsc, SqrOsc, TriOsc] automatically turns into Osc[].
On the other hand it is indeed not possible to use an array as an array of its supertype. One reason for this is that x @=> A[0] should work for any UGen x and UGen[] A but would be invalid if A is actually Osc[]. This kind of error would be only detected at run-time and not at compile-time, breaking compile-time type safety.
In your specific case you could take advantage of the first fact and do something this:
[s0$UGen, s1, s2] @=> UGen A[];
But this doesn't generalize beyond determining the type of the array when it is defined literally.
spencer