I made a blueprint with nothing but a spline and PCG inside. In the PCG, the first thing to do before sampling the spline is to snap it to the landscape with these two nodes:
These are the nodes for the border stones. It's just sampling the distance on the spline; most of the nodes here are for the one parameter being broken up. These parameters can be changed on each instance of the PCG in the blueprint by clicking the PCG component.
The grass samples the interior of the spline. I'm using the "Grass Mesh" attribute to dictate what mesh gets spawned because it's an array that can easily be changed in the world. However, I haven't figured out how to weight it yet (other than creating extra array items with the same thing inside).
For this to work, Mesh Selector Type needs to be the underlined, not the default. Press A on a node to view the point data and attributes. You can see that the Add Attribute node is adding the array to the points in order by index.
Patches of flowers are made by sampling the interior spline a few times. I use Create Points Grid and attach them (Copy Points) to the few points on the spline sampler, offset them, then project/snap them back onto the landscape.
The difference node is meant to crop out areas that have gone outside the flowerbed, though practically it's just cropping anything too close to the border spline, so things far enough out stay.
Distance and Density Filter allows me to control how far away from the patch origin flowers can spawn. Then I Scale by Density so flowers further from the origin are smaller and vise versa.