Good luck with that, Peter.
Splines are evil critters we can't live with, but we can't live without them either.
The problem is simple. Splines are handled by the CPU rather than the GPU. This was stated quite a long time ago I think by James Moody way back in the TS12 days. Since the geometry-segments are actually individual assets, they need to be loaded up and processed each time they are drawn. This was particularly true of the older chunky-mesh assets which are now obsolete. Bigger chunks are more efficient in some cases and this is why walls and roads load better, but grass does not. This alone can cause chunking and stuttering with older spline objects, but has gotten better with mesh libraries, not used back in the olden days, and with the used of shared textures.
The issue is also the kinds of splines. Grass splines are notoriously asset hungry. They have multiple issues that add up and cause awful slowness due to how they are constructed. Grass is made up of multiple triangles that are crisscrossed and placed in a star pattern. Drawing things at odd angles is tough for graphics cards and CPUs to process due to the extra calculations needed to make them work. This is bad enough, but add in double-sided objects. Yes, each triangle is usually, and 99.999% of the time double-sided meaning there are textures on both sides of a mesh that has polygons on both sides. Combine this now with the fact that the grass triangles are obscuring each other, and now that adds another blob to the stew. The computer, meaning the CPU now has to calculate the removal of hidden surfaces, and the GPU now has to work on drawing those objects with subtracted geometry. Other splines such as fences, roads, and walls aren't as bad because the areas are bigger and get drawn in bigger chunks, so there's less constant loading of geometer, calculating, and figuring out what's going on.
The other problem we run into too is some splines, are made better than others. Some use better low-resolution meshes and low-resolution textures so they load quickly. The only solution here is to look at what works best and what doesn't, and make not of what doesn't and delete it at some point so it's not used again. Remembering to write things down is the hard part!
With all this confusing gobbly-gook, it boils down to this. If you want to use grass splines, go ahead but use them sparingly. Keep them to where they will be seen the most, but don't do thick areas of grass. The more crisscrossing grass splines you have on top of the crisscrossed geometry means that there is this much more load on the CPU and GPU, and this adds more to the slowness.
Not long ago, I thinned, trimmed, and removed a ton of splines from a route I downloaded. There were so many grass splines on the route that I could barely navigate around in Surveyor. Once I trimmed down the amount of splines, the frame-rates jumped dramatically, and what grass was left didn't look any different from what it did with all the splines in it in the first place!
Why is the system slow and getting slower while using the program? There are a number of issues that can cause this, but related to splines it's just that the system is really, really busy handling the splines along with attempting to handle all the scripts for everything else. The other issue too is if there are a lot of AI drivers, this adds insult to injury and as the AI starts to do stupid things, their own actions make things worse. I've noticed this myself on my routes as well. When I start getting messages about lots of stuck drivers, it's then that things overall are slowing down. After I clear up the clog, the performance is better.
The other issue too here is some of the scripts are possibly causing what is called a memory leak. This means that they allocate space in a memory table to store information, but when the information is no longer needed and the information is cleared, that memory space isn't put back into the main memory pool for use again. What this means is there is now less memory for the other processes to use. Later on if the script is loaded up again a new table is created, causing a repeat of the same issue all over again. MS Excel used to suffer from this, and probably still does, and back in the Win95 days would eventually crash the computer.