Как реализована лента событий в популярных сервисах?
Чем вас не устраивает первый вариант и в чём плюсы второго?
Логика подсказывает, что дублировать пост для каждого юзера, который на него подписан это абсурд.
Хотите сказать, что если я делаю пост в группу в которой 100к подписчиков, то я сразу создаю 100к записей в базе?
Количество постов в таблице постов будет больше чем в первом варианте на несколько порядков и это только замедлит выборку.
Однако, и первый способ гиганты вряд-ли используют прямо так. Постов в соцсетях и так миллиарды. Не могут они храниться в одной таблице так чтобы простой select * from posts join subscribe sub on(...) where sub.user_id=123 выдавал результат за адекватное время. 
Скорее всего там какие-то архисложные индексы строятся, какие-то умные кэши используются, база распределена так, чтобы сотня машин одновременно искала, но каждая машина в своём куске таблицы...
Не парьтесь. Делайте так как считаете нужным, но знайте, что при росте количества пользователей вам придётся ещё разок всё переписать, а при выходе на мировой уровень, скорее всего у вас уже будет команда спецов, и вы ещё пару раз всё перепишете с нуля на других технологиях.
Поищите  доклад Arsen Kostenko How Twitter Works, вот например https://www.youtube.com/watch?v=tlPkM0lxMKc
Если коротко - лента для каждого пользователя рассчитана заранее.
Но Не парьтесь. Делайте так как считаете нужным, но знайте, что при росте количества пользователей вам придётся ещё разок всё переписать, а при выходе на мировой уровень, скорее всего у вас уже будет команда спецов, и вы ещё пару раз всё перепишете с нуля на других технологиях. - 100%