The mandatory usage of parenthesis (or a variable) in the first example with the function call is due to Lua grammar rules: this is simply how the language grammar is defined, and not following the defined grammar results in syntax/parse errors.
See Section 2.5.8 – Function Calls, of the Lua Reference.
A function call in Lua has the following syntax:
functioncall ::= prefixexp args
In a function call, first prefixexp and args are evaluated. If the value of prefixexp has type function, then this function is called with the given arguments. Otherwise, the prefixexp "call" metamethod is called, having as first parameter the value of prefixexp, followed by the original call arguments (see §2.8).
The form
functioncall ::= prefixexp `:´ Name args
..
Where prefixexp is defined as:
prefixexp ::= var | functioncall | ( exp )
That is, prefixexp cannot be a String (or any other) literal, but it can be a variable (var); or any expression inside parentheses (( expr )); or even chained function call (functioncall)..
Using a String (or any other) literal in the args position is permitted due to the following productions:
args ::= `(´ [explist] `)´ | tableconstructor | String
explist ::= {exp `,´} exp
As a complimentary case to the examples, note that the args production has a special-case that doesn't require parenthesis if taking a single String literal. Thus the following is valid, even if seemingly odd:
('Hello %s'):format "World!"