The question you should do yourself is not whatever being modular is good or not, being abstracted to be good or not.
The question should be: is my system "connected" to my real-world problem?
As you go over and over the design and grow abstracted you get far from the real design. You know that already.
Always keep in touch with your design. Artistic decisions do influence your system. Consider:
- We need massive smoke-simulating particle systems VS our most intensive particle system is to simulate sparks from an hanging cable and counts 20 triangles frame
- We need continuous streaming of our massive graphics VS this is 2015, just load everything into memory.
I encourage you in writing "exploratively". That means, yes, write stuff you're not sure about.
When you start building on top of the exploratively-designed stuff it'll be the right time to iterate it. At that point, you'll hopefully have a better understanding of the problem.
If something is "disconnected" from your problem, it should be allowed to exist only if it saves you mental sanity.
Be careful with scripting. You must think at what you want the scripts to do or not. I would honestly leave it out for a few iterations.