Причина в том, что это разные "реквизиты", и они оцениваются в разное время, в первом примере реквизиты - это реквизиты, передаваемые в стилизованный компонент, дополненные темой (при условии, что вы использовали <ThemeProvider .../>
. Ввторой пример, это реквизиты, передаваемые вашему компоненту.
Внедрение темы выполняется библиотекой styled-component и только в компоненты styleled. Ваш компонент не получает его (потому что это не стилькомпонент).
Кстати, ваш код имеет избыточную вложенность и создает стилизованный компонент каждый раз, когда он вызывается.
Для этого достаточно просто определить:
const SectionHeading = styled.div`
${props => (props.theme && props.theme.green && {color: 'green'})};
`;
, а затем:
export default SectionHeading;
Обратите внимание, что в вашем примере кода в первой части содержится опечатка, которую вы написали {propss.children}
(дополнительно 's').