смотрите, вы теоретически можете повесить паддинг и на .header__container, никто не может вам запретить =) но, если например у вас тот же .container где-нибудь в footer будет с такими же padding как и в header - вам придется и для него прописать этот падинг, а потом поменять при необходимости в 2, 3...20 местах, если везде это будут элементы родителя. Если же у вас есть увереность, что этот элемент в таком виде существует только в контексте этого родителя и больше нигде и никогда - то можно и туда. это как элемент блока, который не является отдельным блоком. тогда все стили пишутся на него, т.к. нет смысла в избыточном выделении элемента как отдельного блока
дело в том, что есть «общие» padding’и – подходят в б-ве блоков-родителей для .container, а есть, скажем .container.header__container и там специфичный padding, но в стилях .container и .header__container имеют одинаковую специфичность и не получается никак перебить без каскада или !important. Мне это очень не нравится, а как по-другому, я не знаю.