This is just a guess. The reason that the WP gallery is responsive when added to the content wysiwyg editor is probably because it is in the content wysiwyg editor. Images are made responsive by WP by applying a filter to the content that does this and this filter is not run when calling do_shortcode() from the template.
You can try this, but I don’t know if it will work
echo wp_make_content_images_responsive(do_shortcode( $shortcode ));