Many languages have several rules like the following in their grammars, which forbid trailing commas:
call-expr: ident '(' expr-list? ')';
expr-list: expr | expr-list ',' expr;
However, the following formulation allows (but does not require) trailing commas, which has well-known advantages:
call-expr: ident '(' expr-list? expr? ')';
expr-list: expr ',' | expr-list expr ',';
Is there any downside to always using this, at least internally?