Thank you! for the feedback.
I was going to say the lighting shouldn't make much of a difference but wow I didn't even realize, when I disable the lighting the fps on my PC went from 465fps -> 1312fps. So thanks for the heads up, I probably should have paid more attention to the lighting settings, haha.
As for the amount of objects, there isn't many. Each chunk (16x256x16 cubes) is its own node, containing arrays for its voxel values, ArrayMesh data and a generated mesh attached to it. This is fairly typical stuff for every voxel engine or minecraft clone.
When the player and game are sitting idle, other than lighting what takes up the performance is the amount of vertices being rendered, which is entirely dependent on the graphics card which is why your 2080 Ti handles it well. Smaller/larger view distances make the biggest difference here.
As for chunks being generated; GDScript is totally SAVED by multi-threading. It's an incredibly powerful feature of Godot, without it the game was terribly laggy even while doing "yield idle_frame".
Thanks to multi-threading it doesn't matter what you throw at GDScript, it will still run the game smoothly. The thread will simply take a longer period of time to produce a result (the more you give it to do). I'm really happy I learnt how to do multi-threading from this experience.
This project does have a massive downside though, turn on "caves" option and the chunks will take just a little bit too long to generate in my opinion. This is not good enough so I accepted defeat here.