Interesting, the RFC says the struct S(T) syntax actually declares 2 things at the same time, so from the frame of my question it's more of a dual purpose declaration, one yielding a type, the other one a constructor function.
You might have a point that these dual declarations aren't as uncommon as I thought. It's probably that unit structs are pervasive and you sort-of forget what's happening, while passing "enum variants as function pointers" was new to me.
It simply reflects how the struct definition looks like. No parens (unit struct) = scalar value. Parens (tuple struct) = function. Curly braces (struct with named fields) = no value equivalent because there’s no syntax in Rust for "calling" something with curlies and named parameters.