I always end up coming back to this one. It isn’t a perfect situation, and you think it would be. The OOTB tags give us an invert elevation tag that pulls that parameter. No BOP elevation is given as a parameter for us to use, so we have to use the diameter parameters and so on. Tag-wise, we can’t add formulas to populate them. All we can do is create a calculated value in a schedule, and that can be tricky to use the right parameters to give us the correct value, often ending up with rounding errors. I am including this link to help explain how Revit actually determines these values, https://aectechtalk.wordpress.com/2014/01/14/understanding-revit-pipe-sizes-and-elevations/
I use the spot elevation annotation in plan and section/elevation views. In plan, I have to tab to be sure I’m snapping to the bottom of pipe. A prefix can be added for BOP. The issue with this is it will not be relative to the level by default; it is relative to the base point or survey point depending on type.
You will need to configure a system tag family with Type settings for a prefix value (BOP:), etc. Then there are instance parameters allowing Relative Base to be the Current Level, or specify a level. Also, Display Elevations can be set to show Top, Bottom, or both values on the tag. Being careful with the tabbing, bottom of insulation can even be selected in plan view. You will need different types created so that you can have different prefix values and text settings for each situation.