Ok, de acordo com a página do manual rc.conf , esta é o comportamento pretendido.
Na seção network_interfaces, ele lê.
For each ifconfig_<interface>_alias<n> entry with an address
family keyword, its contents are passed to ifconfig(8).
Execution stops at the first unsuccessful access,
so if something like this is present:
ifconfig_ed0_alias0="inet 127.0.0.251 netmask 0xffffffff"
ifconfig_ed0_alias1="inet 127.0.0.252 netmask 0xffffffff"
ifconfig_ed0_alias2="inet 127.0.0.253 netmask 0xffffffff"
ifconfig_ed0_alias4="inet 127.0.0.254 netmask 0xffffffff"
Then note that alias4 would not be added since the search
would stop with the missing ''alias3'' entry. Because of
this difficult to manage behavior, there is ifconfig_<interface>_aliases variable,
which has the same functionality as ifconfig_<interface>_alias<n>