The object initializer syntax is shorthand for something like this:
var x = new MyClass();
x.Property1 = "value1";
x.Property2 = "value2";
x.Property3 = "value3";
...
You can verify this by creating a default constructor with dummy content and a breakpoint, and then instantiating the class with an object initializer; the breakpoint will be hit, even though you're not explicitly calling the default constructor.
So when you do var x = new MyClass { Property1 = "value1", Property2 = "value2, Property3 = "value3" };
. you are calling the default constructor. If it's missing, you get the compile-time error you noticed.