Here is a modified version that removes the trailing space and has been simplified a little.
NewTEXT <- str_replace(TEXT, pattern = " \\([^)]+\\)", replacement = "")
The pattern argument is a regular expression, which allows defining patterns in text. It looks complicated at first but can be understood by explaining each piece.
In a regular expression, placing text within [^ ] means you want to match any character that is not included within the brackets. So [^)] represents any character that is not a ).
Placing a + after a character means "one or more of the preceding character". So [^)]+ represents one or more characters that are not ).
What we want to search for is a space, followed by (, followed by one or more characters that are not ), followed by ). You might think that would look like
" ([^)]+)"
However parentheses are special characters within a regular expression. They are used to make groups of text. To prevent the parentheses from being treated as a special character, they must be preceded by two back slashes. That makes the final regular expression
" \\([^)]+\\)"
(Outside of R, it is sufficient to precede special characters in a regular expression by one back slash.)
Learning regular expressions is very helpful in many programming situations.