Q:

Can I enhance complex table accessibility with JavaScript? 

A website has a great number of complex informational tables with multi-level headers, a simple version of which is:

table { border: 1px solid black; border-collapse:collapse; width: 100%; }
td, th { border: 1px solid black; }
th { background-color: lightgray; }
<!--  simplified table -->
<table>
  <thead>
    <tr><th></th><th>Col 1</th><th>Col 2</th></tr>
  </thead>
  <tbody>
    <tr><th>Row 1</th><td>Foo</td><td>Bar</td></tr>
    <tr><th colspan="3">Header for subregion</th></tr>
    <tr><th>Row 2</th><td>Foo</td><td>Bar</td></tr>
    <tr><th>Row 3</th><td>Foo</td><td>Bar</td></tr>
  </tbody>
</table>

For various reasons, server-side and hand-coded solutions are out.  If I use JavaScript that applies the suggested WAI fixes ("use id and headers attributes to associate header and data cells explicitly") to enhance the HTML, will this be reliably reflected in what users actually get in a screen reader? 
Using ARIA Live Regions seems like it would needlessly update them to a host of changes.  So, ideally, can it work without that? 

A:

The short answer is "yes".   In general(*), any attributes you apply via javascript, whether ARIA attributes or any other html attributes, will be available to screen readers. 
(*) There is (at least) one exception that I'm aware of, aria-live.   There are browser and screen reader combinations where that attribute has to exist on the element when the page is loaded in order for it to be honored.   You mentioned aria-live in your question but that attribute doesn't really come into play unless you are making updates to your page dyanamically (for example, if you table headers changed based on some user action). 
I was going to show some sample code to show the desired results based on your code snippet, but your example is a little confusing.   You have a "Header for subregion" that spans all the columns.   Visually, it looks more like a caption/summary for the table than it does a column header.   Can you clarify?   Table captions should not be coded as headers (<th>). 
Do you want "Header for subregion" to be read as the column header for every cell?