Add (grand)child pages automatically to nav menu

It’s wise to avoid nav menus in cases like this where things may change frequently. Instead, you could look into using wp_list_pages() – with a custom walker if you need one to format it visually. Try wp_list_pages() right out of the box first and see whether you can just use CSS to style the list as desired. If not, then move on to a custom walker, which will also let you adjust the HTML.