レイアウトXMLファイルに限らず文字列リソースファイル等のリソースファイルは「res」フォルダ以下に配置します。これらのファイルは保存(アプリの実行時ではありません!)すると、ADTによって自動的にコンパイルされ、genディレクトリ以下にJavaファイル「R.java」を作成します。
Androidアプリが実行される際にはアプリケーションに必要なファイルは全てAPKという形でパッケージングされますが、この中にはXMLファイルから自動生成された「R.java」も含まれます。(正確には「R.java」をコンパイルしたクラスファイルです。)
つまり、コンパイル時に静的に決定している情報のみがXMLファイルで定義することができることになります。これは、Javaプログラムでリソースファイルを修正するということは不可能ということを意味します。
実行時にレイアウトを動的に変更したい場合などは、2つ目の方法であるJavaプログラムによる定義方法を使うしかないということになります。
ただし、一般的にJavaプログラムで1からレイアウトを作成するということはしないと言っていいでしょう。これはレイアウトXMLファイルを使う場合に比べ圧倒的にメンテナンス性が落ちてしまったり、コード量が増えるためです。
では、動的にレイアウトを変更したい場合はどうするのでしょうか?
一般的には、変更する箇所をレイアウトXMLファイルとして部品化し、Javaプログラムからはこの部品化したレイアウトXMLファイルを読み込むという方法がとられるようです。