C, (126125 - 3) bytes
i,j,a;main(b,s){for(sscanf(gets(s),"%d %d",&a,&b);j<a+b;)printf(i++>=a+b++i>a+b?i=! ++j,"\n":"%*d",strlen(s)*2,(i<a?a:b)*(j<b?b:a));} Input is taken as two space-separated integers on the same line. Each cell is padded with spaces to twice length of the input string.