It is a common principle in programming to fully update/populate an object before handig it off to an external system, because they might expect to receive a complete object and might optimize for that (i.e. changes after the fact may be more expensive than you can observe from the outside, which is a waste of performance, or changes may not be taken into account if you change them after the fact (not for Roblox’s systems, but your own might)).
You should set the properties of any object before you parent it into the DataModel, because once it is in the DataModel it will start calling signals such as ChildAdded, DescendantAdded, CollectionService’s instance added signal, etc, and moreover it will start participating in the physics and rendering subsystems. It is quite untidy to first parent the object and then change its properties, as this might unnecessarily fire other signals / hooks in subsystems in your game. It also makes the job of your own systems that you define in your game harder (such as entity-component systems working on certain CollectionService tags), as the component would have to dynamically react to updates in these properties if you change them after parenting them into the game.
This holds regardless of what or where you are parenting a certain object to. There is also really no reason why you shouldn’t do this apart from it taking an extra line of code (.Parent call after setting properties rather than inside the Instance.new).