Parentheses look too much like a function call, and brackets too much like an array. So I'd go with braces or "option," leaning toward the latter.
I can't resist one more deviation: If you don't like any of the other ideas, make the option names be the default values for the optional inputs, then instead of checking if (foo ≠ ()) you could check if (foo ≠ (foo)).
P.S. IIRC they use braces for optional inputs in Unix man pages.
Maybe kids at certain age, that are the target audience for this kind of block, won't mind as much that this block is an unusually tall one as they would mind not being able to tell which slot is for which purpose in a normally tall one.
I like it. Maybe you can even bracket each line individually.
The ... ones aren't bad, but I find the arrowhead ones problematic. The third one is extra bad because it suggests to me that the first input is variadic (I know, that would have arrows both ways, but if I'm a user looking at the block I might not figure that out). The fourth one avoids that trap, but it makes me feel that if I click the arrowhead I'll get more information, like the arrowhead on comments.