expr on other *NIX versions seems to handle a leading hyphen in the text string.
On FreeBSD, the hyphen is parsed as an illegal option:
/bin/expr '-XXabs' : '.*\(aa*\)'
expr: illegal option -- X
expr: usage: expr [-e] expression
A trivial workaround is to use grouping:
/bin/expr \( '-XXabs' : '.*\(aa*\)' \)
If options that take an option-argument of ":" can be excluded forever, a simple workaround would be to skip option processing if there are 3 arguments (excluding argv) and the second argument is ":".
A stronger form of only treating "--" and "-e" as options would prevent adding any more options without compatibility problems.
Perhaps this is acceptable, since expr is not a utility where major extensions are expected.