Поиск идет слева направо. Регулярка стремится как можно скорее найти совпадение. "aaab" хоть и длиннее, чем "ab", но начинается раньше, потому так.
Вот если сделать необязательное b (a+?b?), то да, будет "а".
В то же время, a+b? снова дает "aaab", т.к. оба отрезка жадные.
a+b?? даст "aaa", тут ашки жадные, б-шки нет.
https://learn.javascript.ru/regexp-greedy-and-lazy