Placing raw HTML inside a WordPress shortcode

For the sake of having @Milo’s comment as an answer. Your code works as it should, it is just not possible to “write” HTML in the visual editor also in shortcodes. Shorcodes are not treated differently then any other text.

If you want formatted HTML in your shortcode you just need to use the normal visual editor formatting tools, or switch to the text editor.