The octree should be perfectly fine for creating grass objects dynamically, and in fact you would certainly want to use it so that the grass objects can interact normally with the rest of the rendering (ie. lights and shadows).
If the grass patches use ordinary model resources loaded through the ResourceCache, instantiating more copies of them is fairly fast (ie. create a scene node and a drawable component, SetModel to it), as well as deleting them (just remove the scene node). ResourceCache takes care of keeping the model resource(s) in memory for fast access.
If you need to create model resources dynamically, there is not a real “fast” or a “slow” path either to it. Create model, create vertex/index buffers, fill them with data. Refer to the 34_DynamicGeometry C++ sample.
Most FPS / TPS games seem to use alpha-tested opaque vegetation, which means that it’s not an actual alpha object as far as the Urho’s renderer would be concerned, but writes to the Z-buffer normally. In this case the renderer can instance your objects. If you need actual alpha blending, the grass patches will need to be distance-sorted and that will tax the CPU and not allow instancing. In that case I’d recommend to use as large patches as possible, so that you only need a few of them.