They aren’t “initialized properly” because it is a blueprint class. The technical guide on blueprint compiling states that the default values are copied from the CDO after compilation is done, by calling the copy Class Default Object Properties.
NewObject finishes right after the object is created, but before Copy Class Default Object Properties has been called by the created object.
As to why you can get the valid variable values from the next line, that’s because the line is called after the value copying has happened.
DuplicateObject finishes only after the copying is complete, which includes the class variables.