上書きってか、
pa[0] = (char *)&(a[0][0]);
pa[1] = (char *)&(a[1][0]);
でポインタとデータ部をリンクさせ、
pa[0] = "aaaa";
pa[1] = "bbbb";
そこに文字列代入しているんじゃないの?