Veo 2 errores:
Código Delphi
[-]
Etiquetas[ite] := TQRLabel.Create(Q2Cap);
Campos[ite] := TQRDBText.Create(Q2Detalle);
Etiquetas[ite] := QRLabel1;
O sea, primero en etiquetas[ite] creas un qrlabel, y después dices etiquetas[ite]:= qrlabel1... pues te acabas de cargar la etiqueta que creaste antes. Bueno en realidad no, la etiqueta que creaste al principio, se quedará en memoria, pero no podrás acceder a ella para asignarle las propiedades.
cuando a continuación haces:
Código Delphi
[-]Etiquetas[ite].Caption := Grid.Columns[ite].Title.Caption;
Etiquetas[ite].Width := Grid.Columns[ite].Field.DataSize;
realmente estas cambiando las propiedades al QRLabel1 no al que creaste anteriormente!!!.
Por otra parte no veo que asignes el Parent de los controles que creas en ejecución, así que no aparecen jamás en la banda detalle.
Busca por el foro, hay mucho código sobre eso.
Saludos