execの戻り値indexが表すのはバイト数

RegExpのexecが返すindexは文字数ではなくバイト数で返ってきます。
他の文字列処理用の関数とは異なるので紛らわしったらありゃしない。
バグなのか仕様なのか微妙なところです。

var str:String = "さいたさいた桜がさいた";
trace(str.indexOf("桜"), "String.indexOfの場合");
// [trace] 6 String.indexOfの場合

var reg:RegExp = /桜/;
var result:* = reg.exec(str);
trace(result.index, "RegExp execの戻り値のindexの場合");
// [trace] 18 RegExp execの戻り値のindexの場合