When an array of objects is passed as a parameter webservices appears to check the first member and selects the correct subclass for instantiation. However, if a subsequent member is a different subclass an error results as it attempts to marshal into the same subclass.
It then complains that there is a field that is not valid in that position. Apparently, it only checks once when processing a object array that is filled with multiple subclasses.
There was a similar problem in pojo cache during replication last year and they were able to fix it over night.