Structs defined with different fields based on concrete parameters?

No. Julias’ type system is nominal, which means that one name is one type - you cannot have two types with the same name in the same namespace. The canonical way to achieve this is to have one type, with the optional field being typed something like Union{Nothing T}, and subsequently checking which case you are in.