Yo entiendo que cuando hablas de un arreglo te refieres a un ARRAY o LISTA y cuando te refieres a polimórfico está queriendo decir que puedes almacenar CUALQUIER COSA.
Si es así pienso en un TList de Delphi cuyos items son Pointers y puedes almacenar en ellos cualquier objeto. Aun mejor, en Delphi también tienes un TObjectList, que viene a ser una TList, pero pensada para almacenar objetos.
Por último, se me ocurre que puedes utilizar arrays dinámicos para almacenar todo aquello que se te plazca.
La otra opción es que Ńuńo tenga razón y estés pensando el poner en marcha un "taller-arregla-todo"