Как по мне либо класть layout в рендер каждого компонента, либо так, когда нужна динамика. Просто да, в этот example такой вот бонус вышел с тем что стейт layout'а локальный (если он нужен) не дохнет при переходе между разными страницами с одинаковым layout'ом.
В случае с Page1Component = () => <Layout> Content... </Layout> такого бонуса нет. У меня например даже скролл у меню слетал вверх, хотя скролл самой страницы оставался на месте при редиректах.
В случае с условиями в самом app.js или в каком-то общем layout'е ты городишь условия + у тебя скорее всего подгрузится код всех layout'ов