For me, the correct answer is:
You should pass in as many variables as is required to setup the object in a state that is not invalid.
Anything else that is “option”, I prefer to leave as properties, especially now that C# provides object initializers.