Квадратные скобки означают, что содержимое является необязательным, но все, что находится за пределами квадратных скобок, является обязательным.
С вашей записью:
RegexObject.match(string, [pos], [endpos])
Я ожидал бы написать:
r.match("foo",,)
Вложенность обязательна, потому что если вы предоставляете третий параметр, то вы также должны указать второй параметр, даже если это необязательный параметр. Следующая не вложенная альтернатива будет неоднозначной:
RegexObject.match(string[, pos][, endpos])