Overwrite functions.php of a theme – What if the theme is updated?

In general Child Themes are meant to be used for customizations on upstream parent theme.

However views differ for specific types of customizations. Since shortcodes are related to your content a lot, it might be more robust to considering putting them into simple plugin (or “must use” plugin).