WP Base Page not working as expected
Im answering my own question and I'll probably go overboard in explaining everything exhaustively, but I sunk too much time into this to just let my understanding disappear into my own forget.

In this particular site, site admins use the custom page template 'page-civiform.php' whenever they want to create a page which will contain a CiviCRM form, inserted via shortcode, and this page template allows them to also insert additional content via a custom field which will display in a column alongside the form.  Looks nice.

End users submit the form, and then CiviCRM automatically generates each subsequent page (thank you page, event registration confirmation page, etc).  

These pages will have the same body classes as the page where the shortcode was inserted.  

BUT these Civi-generated pages do NOT use the same content as the page with the shortcode. And by content, I think this means everything in between get_header() and get_footer(). Instead, they use the content from another page, and there are three ways to specify which page they will use:


If there is no other method utilized to specify which page to use, CiviCRM will use the home page. Again, content, not body classes (that was the source of my confusion).
In CiviCRM > Administer > System Settings > CMS Database Integration, the WordPress Base Page can be set to a specific URL.  Then that page's content will be used.  
It is also possible to specify the page via a filter which would go into functions.php or a plugin.  And here's code for that:


add_filter( 'civicrm_basepage_template', 'my_basepage_template' ); 

function my_basepage_template( $template ) {

return 'page.php'; //whichever template you want

}

The path of least resistance here is to have ALL of these pages (pages with shortcode inserted as well as any resultant civi-generated pages) have the same template, because then this whole situation wouldn't matter.  But on this site, we want some content in a column next to the shortcode-generated form, so that's why we have a separate page template with a custom field ('page-civiform.php').

Here is 'page-civiform.php' so you can see how the custom field is conditionally included or not.  The presence of that conditional statement would actually allow me to set this page as the WordPress Base Page, and it would yield the same result, which in this casse is two columns on page with shortcode, one column (just Civi's content) on auto-generated pages.  

Basically, this all comes down to having different design/layout for pages with shortcodes vs civi-generated pages.