Well, actually with features I don't really have that. Its only the core that can detect if it needs an upgrade, the current version is hard coded into DatabaseHelper.DBCodeVersion() and I increment it there as needed. So if the mojoportal-core version in mp_SchemaVersion is less than that it knows it needs to run setup. But typically if included features have changed the core version is also changed (at least for official releases) so this is usually sufficient even for features. Those working from svn should pretty much always visit /Setup/Default.aspx after doing svn update and rebuild solution.
Its always safe to run the /Setup/Default.aspx page, as feature specific upgrade scripts will only be executed if they are of a higher version than what is currently in the mp_SchemaVersion table for the feature.
The difference is, higher version feature scripts will always be executed, but core scripts will only be executed if they are higher than what is in the db and less than or equal to what is reported by DatabaseHelper.DBCodeVersion(). So for the core I can commit the next version of script to svn but prevent it from running until I increment to that version in DatabaseHelper.DBCodeVersion(). Whereas with feature scripts, once I commit them to trunk they will run so if I make additional changes I have to use a new script version rather than keep editing the same one because svn users may have already run it and would miss any new edits. I do sometimes edit them in my sandbox, but once I merge to trunk its on to the next version for any new script work for features.
Best,
Joe