I understand.
So it is mainly a programming convenience.
For the scenario of “Router-Switch-AP (all in one)” (as written in this comment):
Why would we need to have these “/interface bridge vlan” commands:
# egress behavior, handled automatically
# L3 switching so Bridge must be a tagged member
/interface bridge vlan
add bridge=BR1 tagged=BR1 vlan-ids=10
add bridge=BR1 tagged=BR1 vlan-ids=20
add bridge=BR1 tagged=BR1 vlan-ids=99
?
As I noted earlier, these commands add tagging of the VLAN id to the packets which leave the bridge.
Specifically for the scenario of “Router-Switch-AP (all in one)”, we don’t need the packets which leave our device to have VLAN tagging.
Their VLAN tagging is redundant, because only the clients will read it (and do nothing with it).