Как лучше скрыть элемент в react?
Мне больше нравится вариант с Css
Он проще, универсальный и понятен всем. А вот возникающий элемент из ниоткуда это нонсенс. 
Единственное оправдание это экономия трафика.
Я предпочел бы 2 вариант.
только единственное, что бы сделал это отдельный хук, который бы возвращал ширину экрана и использовал бы в компоненте. Передача пропсом здесь не нужна.
Если сравнивать с css вариантом, то тут выгода на лицо, меньше медиа запросов и логика компонента упакована в одном месте. Например компонент делает какие-то вычисления, то смысл их делать если ширина экрана не та, следовательно нужно меньше ресурсов на рендер.