man bash we can read in Shell Builtin Commands section:
Unless otherwise noted, each builtin command documented in this section as accepting options preceded by
-- to signify the end of the options.
test builtins do not accept options and do not treat
-- specially. The
shift builtins accept and process arguments beginning with
- without requiring
--. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with
- as invalid options and require
-- to prevent this interpretation.
echo does not interpret
-- to mean the end of options.