うーん、でも普通(?)にwhile使えば正規表現処理は1回ですむんだよな
これもう少しうまくかけないかな

str = "11ABC22BCD33CDEF"
var reg = /(\d+(\w))/g;
var ary = [];
while (a = reg.exec(str)) {
 ary.push(a);
}
console.log(ary);