Okay, after some more research.
In your particular case (mesh with texture), this is happening because of GPU filtering.
When your textures are interpolated (and they usually are, to get them looking smooth), not only the alphas of the pixels are interpolated but their colours as well.
So you might be getting a soft edge from your semitransparent textures because the pixel alphas are being interpolated, like for that foliage texture. But the colours of the edge pixels will also be interpolated with any adjacent pixels, including the fully transparent ones. Those transparent pixels might have some crazy colour like pure white, black, grey etc. giving that fringe.
To solve this problem you need to bleed all the edge pixels of your semitransparent textures. You can do this in several ways, the most easy being to open the texture in an image editor, duplicate the layer several times, put those copies below it and blur those copies, then merge everything back together (remember to keep one layer copy untouched so you can use it as a selection mask to restore the transparency to what it should be).
This is in Eevee, with alpha-blend mode and clip shadows: