Well, kinda - milkshape was one of those things I bought with high hopes of getting to know well, but I never seemed to get around to it.
So far I’ve only used it for changing shaders on existing MD3s.
However, even that limited knowledge was enough for me to conduct my tests, and the results are…
- Only models generated using the q3map_foliage shader command are stored as part of the culled models
- It only works with MD3s
- The MD3s used MUST include the distancecull shader command
Now it’s not as bad as all that, I’m reasonably sure I can with a bit of effort build my models in radiant, export to ASE and then find some convoluted means of turning them into MD3s - that’s not something that concerns me - actually building my models 
The good news is…
I’ve found a simple way of specifically placing a single foliage model. Pretty obvious once I’d thought about it.
Basically create a shader along the following lines:
textures/culltest/specific
{
qer_editorimage textures/mml_church_se_a1/grass.tga
q3map_foliage models/mapobjects/culltestmodels/grasstest.md3 1.0 256 1.0 0
implicitmap textures/mml_church_se_a1/grass.tga
}
The important part is, of course, the q3map_foliage line. I’ve set the probability of a model being used to 1, IE always. Then I’ve set the area for which this probability is used to 256 (IE big).
Now if you create a small brush, say 4x4x4 units and paint the top face with this shader, you will always get a single foliage model in it’s corner.
Now, I think from this I should be able to create a prefab easily enough.
Make the above shader basically clip, and build your model’s clip brush, painting the bottom surface with the foliage clip shader.
You now have a brush you should be able to place anywhere that is the invisible clip version of the foliage model that will be generated. Hurrah!
The only issue I can think of now is that I believe the foliage thing may rotate the foliage models randomly, in which case you are pretty much limited to circular shapes (or the clip shape won’t always match it) but for small rocks etc this is fine.
If you also include an autosprite shader as part of it (but obviously smaller than the foliage model so it doesn’t extend beyond it when they are both drawn) then you’ve got (hopefully) a prefab that generates a higher poly model up close and uses a low detail model far away.
I’ve almost certainly missed some important part of the equation that means the above isn’t really that useful.
It occurs to me the autosprite hit needs to be much lower than the full polygon model, so if you are only using simple MF3s, you are probably better off skipping the autosprite stage, otherwise they’ll cancel each other out or possibly even be slower than just plain using the md3s.
But until then, I’m happy 
Bring it on 