Вы сделали последнюю группу необязательной, удалите ?
в конце:
Regex r = new Regex("\\s*\\{\\s*Binding\\s+(\\S+)?\\s*,\\s*Mode\\s*=\\s*(\\S+)?(\\s*,\\s*FallbackValue\\s*=\\s*(\\S+)?)\\s*\\}\\s*");
# ___^
Если вы хотите, чтобы последняя группа была необязательной, сделайте все слова совпадениями не жадными и добавьте необязательные mark ?
{\\s*Binding\\s+(\\S*)\\s*,\\s*Mode\\s*=\\s*(\\S+?)(?:\\s*,\\s*FallbackValue\\s*=\\s*(\\S*))?\\s*\\}
# ___^ and ___^
Если группы 2 (Mode) или 3 (FallbackValue) могут быть необязательными, используйте:
{\s*Binding\s+(\S+?)(?:\s*,\s*Mode\s*=\s*(\S+?))?(?:\s*,\s*FallbackValue\s*=\s*(\S+)?)?\s*\}
Демонстрация и объяснение