When you call a shortcode using the {{< >}} notation, we replace the shortcode with a placeholder (a short string without whitespace) before sending the content to the markdown render (Goldmark). When we get the rendered content back from Goldmark, we replace the placeholder with the rendered shortcode.
In the last example above, when we get this back from Goldmark…
This produces valid and desired HTML for non-phrasing content such as aside, blockquote, details, div, footer, h1-h6, header, hr, main, nav, ol, p, pre, section, ul and others.
But when we strip the p tags, we don’t know if they are wrapping non-phrasing content or something else; the placeholder has not been replaced yet.
HTML goes in to template files and markdown in to content files, as a general rule.
I see what you mean. I used to have a special home layout, but then you had to specify the text and image options in front matter, and it was much too complicated. Better to let users make their own layouts or raw HTML for the home page. This way, the default behavior is a normal, straightforward page.