Т.к ответ никто не дал, то отвечу сам на свой вопрос.
Ответ в моём посте здесь:
https://stackoverflow.com/q/70070506/16943903.
(Оставляю текст на случае удаление вопроса)
Well, no one answered, so I will write my answer to my question.
I split MainLayout into two parts - HeaderLayout and FooterLayout, made CSS isolation and in MainLayout I put them together.
And use pseudo-class ::deep for child component support (source:
https://docs.microsoft.com/en-us/aspnet/core/blazo...).
I think my solution correspond to Blazor Style Guide and in general it is quite effective.