Как сочетать BEM и динамический контент?
У вас здесь 2 проблемы:нужны ли классы для динамического контента;как, если нужно, модифицировать структуру динамического контента.
Проблема структуры не относится к BEM, она относится к семантике и SEO.
Если же не смотреть на структуру и тэги (использовать ли small внутри или span, заворчивать ли в article) — то вопрос в сущности нужны ли классы на динамическом контенте или нет. Учитывая, что контент динамический, и нет необходимости иметь классы на тэгах, то допустимо сделать каскад на тэги от некоторого блока: например, dynamic-content или content, text.
Почему именно теги? Потому что WYSIWYG по умолчанию генерирует теги. Но вы можете использовать какие-то доп. инструменты, которые подправят итоговый html, расставят классы и т.д. (например, с помощью инструментов типа https://github.com/posthtml/posthtml ).
При необходимости можно дополнительно пометить стили тегов классами.<div class="text">
  <h1>Caption <small>Some Foo Bar</small></h1>
  <article>
    <p>Lorem ipsum...</p>
    <div class="text__p">Dolor sit...</div>
  </article>
</div>.text h1, .text__title { /* main title styles */ }
.text h1>small, .text__sub-title { /* sub-title styles */ }
.text p, .text__p { /* paragraph styles */ }
Таким образом вы инкапсулируете все пользовательские стили в одном месте (одном блоке) и не имеете проблем с созданием контента.
Не важно сколько у вас посетителей в месяц. Применение BEM означает, что вы можете переместить блок в любое место без необходимости в менять разметку. В этом плане элемент .article__p выглядит по меньшей мере странно. Я с вами согласен: если у вас есть блок внутренности которого не меняются, нет смысла добавлять к ним дополнительные классы или идентификаторы, достаточно просто .article p {}.