Mike Pall wrote in the issue that it's easier to parse. If they get rid of the ternary operator, I'll ask him again to drop the period.
a lone ? can mean anything, you can already tell that . is for fetching a subtable.
In C# it's not a lone ?, it's two operators: ?. and ?[
Lua could have ?. ?[ ?" ?{ and ?(
I'd rather it use ?.() the . means getkey, () means expression using .(expr) should be the same as array[], throwing ? as a character should be very obvious what it does.