This has basically always been the case for typography. The point size of physical type refers to the height of the slugs, not the letters on them. You can't just grab two 12pt fonts and expect them to be exactly the same size.
The standard solution is to use x-height, rather than cap-height and I agree that it would be nice to be able to select a font based on that instead of the em-size (font size).
Line height on the web is indeed broken, as it's measured from the center of the em-box and I agree it would be nice to be able to specify baseline distances instead but the catch there is that you really need to know the content of the text being typeset, as soon as you start adding words with diacritics (ÅÀÄ) your lines collide.