So the difference between load and preload is that load starts loading the scene when the line of code is reached, and preload loads the scene ahead of time. You should in theory be able to prevent some lag by loading your scene ahead of time via preload
Somewhere outside of your function, you can use
const roadScene = preload("res://scenes/maps/test_road_load.tscn")
That will make it so that roadScene is able to be instance without needing to re-do the loading of it every time the function is called. It has to be outside of all functions. Ideally towards the top of your script so you can see it clearly in the future.
Then you simply do
var road = roadScene.instance()
when it's time to instance the new roadScene in the function. Did you already try this and it's still lagging?