Непонятно, почему этот вариант неудобен. Даже если сделать так:
function B()
{
var argumentsString
for (var x = arguments.length; x < arguments.length; x++) {
argumentsString += arguments[x]
if(x < arguments.length-1) {
argumentsString += ", ";
}
}
eval("new A(" + argumentsString + ");");
}
Вам всё равно придётся работать с arguments, поскольку вам неизвестно, сколько принимать аргументов. Т.е. брать по индексу. Или подразумевается, что в функции A известно количество аргументов?
P.S.
К сожалению, нельзя передать arguments как массив (String(array)), поскольку вместо элементов, разделённых запятыми, возвращается строка Object Arguments.