WooCommerce 2.1 moved the templates and your overrides stayed

A theme override is a copy of a WooCommerce template placed in yourtheme/woocommerce/, and WooCommerce uses it in preference to its own — permanently, whatever happens upstream. 2.1 restructured enough templates that a theme carrying a dozen copies inherits a dozen silent regressions: fixes, markup changes and new hooks that the shop simply does not receive.

// an override: a whole file owned forever, for two lines of markup
// yourtheme/woocommerce/single-product/title.php

// the same change, without owning a file
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
add_action( 'woocommerce_single_product_summary', 'catalogue_single_title', 5 );

function catalogue_single_title() {
    echo '<h1 class="product-title">' . esc_html( get_the_title() ) . '</h1>';
}

Every core template carries an @version in its docblock, and WooCommerce compares it against the version it shipped — WooCommerce → System Status lists each override that has fallen behind, which is the only place this is visible before a customer finds it. Read that page after every update, not after every complaint. The rule that keeps the list short is to override a template only where the markup genuinely differs, and to use remove_action() and add_action() on the summary, loop and checkout hooks for everything else: hooks are not tied to a file path, so they survive a template being moved or renamed. Each remaining override is a standing cost, paid per release, as a three-way diff between your copy, the old core file and the new one.