If you do everything by code, that means you are taking away the whole scene tree editor, inheritance and instancing system from eventual non-coders working with you. In that sense, it makes the workflow more difficult, unless you are on your own, have only coders or other means of tweaking scenes.
Doing by script or by scenes is not wrong per se, it's two different ways of going (built-in C++ nodes litterally are procedurally build in that sense, take a look at what ColorPicker actually is in a running game). It's just that due to the above, using scene files is more common for teams and enable useful features of the scene system which would be tedious to make by code.
Performance side, I don't think there is too much difference between instancing a scene file or building it by script (at least just a raw one without overrides or anything), but doing by script will at least have a penalty because of the cost of running that script in the first place. When Godot instances a scene, it has all information ready to be set on new node instances, while a script is interpreted bytecode and needs to do everything manually. If you are concerned about performance you could compare how long it takes for a scene to be instanced compared to its script equivalent.