Product A makes new tables in database on install
producta_users
producta_posts
User X makes a mod that creates a new table for storing the mod's data
producta_custom
Product A releases an update, which creates another table, and updates an existing one
producta_threads
producta_posts (update query)
Product A has never created producta_custom, so does nothing with it.
After Product A's update, User X realizes there's a core change causing his mod no longer to work and releases an update.
In regards to skins, if you customize a template from a style, and the upgrade system leaves customized templates alone, you'd either have to manually add the difference, or revert the template, and re-add your customization to that template. If the system however is capable of merging where possible, no changes might be needed. Any template it couldn't diff.patch, it could report back to you after leaving it alone.
If the update of product a actually adds new code for a new function and the template is not updated, that function can't work as it can't output the data, or can't execute because of missing parameters, variables, etc.
Seeing how most of the color changes and css2/css3 allows for customizations without editing the layout (the html5 code), I think a lot of styles will not need to bother with an upgrade, redo, etc.