Dear Chughes
There is no out of the box straightforward solution for this one. The workaround below is however the closest approximation I can propose, fulfilling following requirements:
- The tag should be dynamic. When either object changes its position the tag should dynamically update.
- The tag should be easily placed.
First step:
I propose to use an adaptive component family containing 2 adaptive points. Both adaptive points have their 'Orients to' setting on 'Global (xyz)'. This assures that the adaptive points Z axis will always be vertical regardless of the orientation of the host objects in the project. This adaptive component contains a shared parameter 'DeltaHeight' which is used as a reporting parameter in the adaptive component.

I also added a model line between the 2 points so that the element is easily visible in the project. The visibility of this line is controlled with a type parameter to make it invisible before plotting.
Second step:
It is a pity that an adaptive component family cannot host a tag item or annotation item. We thus have to make a separate generic model tag using the same shared parameter DeltaHeight presented in a label with your graphical layout around (a simple filled region and some detail lines).
Last step:
I added both components to a project and used the adaptive component to measure the height diff. between 2 floors. Next I could tag my newly placed item with our generic model DeltaHeight tag. As you can see in the images below, the tag value automatically updates when one of the floors changes height.


Result:
- The system is dynamic and can be easily placed.
- It is a pity that you have to place and keep the 2 components together yourself (nesting would be preferable but is not possible)
I hope this info is of some use to you or someone else and if not, sorry for the wasted time.
Have a very nice evening and Gods blessings
Paulus Present
PS: I added the testfile.