Если я все правильно понял из вопроса, то в доке и сказано что concat создает новый массив на основе двух, а array.concat() без аргументов создает клон массива. так что в вашем случае лучше использовать myConcat, но быстрее будет без пуша. еще можно попробовать объеденить сплайсом, но тут не уверен.
по идее должно выглядеть так, не понял зачем второй цикл

Код AS3:
private function myConcat(a:Array, b:Array):Array
{
var l:uint=a.length;
for (var i:int = 0; i < b.length; i++)
a[l+i]=b[i];
return a;
}