I think the problem may have been that you had content in the config.inc.php file. If it had been an empty, but writable file, I think the correct paths would have been set, but if there were paths already there, the install would try to use them.
Well, I had heard stories of people fixing their migrated installs by re-running setup over the top. The problem I had is that on my dev box the path was completely different than the root of the production site. If the installer tries to use the existing paths in the config then I guess it’s not a good fix for that problem.
I guess that you might have set non-standard paths to your folders on purpose so it would make sense that the installer would not make assumptions about where the supporting folders should be if it finds existing config details.
An enhancement might be to verify that the paths in the existing config file actually exist, and if they do not then you could reset everything to the default paths based on the current location?
Should I enter a bug or consider this to be expected behavior?
I think it is expected. The upgrade install will straighten out the subsidiary paths like rb_base_url, etc., but has to honor config.inc.php for an existing site.
The section on Updating your Config Files in the docs talks about correcting the paths when you move a site, before doing the upgrade install:
http://rtfm.modx.com/display/revolution20/Moving+Your+Site+to+a+New+Server