Hola,
En realidad puedes hacerlo como con cualquier otro componente: utilizas su constructor para crear una instancia y luego, básicamente, le asignas a su propiedad "Parent" el componente que quieres que acoga a su ventana. Es decir, una secuencia similar a esta:
Código:
var
l: TLabel;
f: TFrame;
b: TButton;
begin
f := TFrame.Create(Self);
f.Parent := Self; // por Form1, por ejemplo
b := TButton.Create(Self);
b.Parent := f;
l := TLabel.Create(Self);
l.Parent := f;
{...}
end;
Ahora bien, me parece que los "frames" son más bien para tenerlos "armados" y listos para usar (en tiempo de diseño o en tiempo de ejecución) y no para andar añadiéndoles componentes. Son como una especie de plantilla que se supone (en mi opinión) está preparada para ser utilizada: contiene los componentes que sean menester, vaya.