Это полностью зависит от дизайна вашего сайта.
Если большинство абзацев на сайте должны иметь поля, а пара - нет, то подход в А потребует наименьшего количества кода и, следовательно, приведет к снижению веса CSS и большей удобству сопровождения.
Но если только абзацы внутри вашего контента и областей боковой панели требуют полей (или их не так много), то подход в B - лучшая идея.
Что касается подхода в C, то меня больше всего беспокоит то, как генерируется HTML для сайта. Если он генерируется серверной системой, эта система должна знать, какие абзацы должны быть разнесены, а какие - нет. Это дополнительная сложность для системы или ее пользователей.
Для конкретного примера абзацев у меня часто получалось что-то вроде B. Легко предположить, что у абзацев должен быть какой-то приятный, приличный стиль, который бы сделал, скажем, статью приятной для чтения. Но если вы посмотрите на большинство современных веб-сайтов, большая часть того, что находится на странице, не похожа на это: это меню и боковые панели и особые мелочи. Теперь, это может быть не очень хорошо, с точки зрения дизайна, но если вы реализуете подобный дизайн, B - это способ сделать это с меньшим количеством кода, а меньшее количество кода обычно означает меньший вес, простоту обслуживания и меньше дефектов.