Your assumption that all folders and files created under cms should correspond to a valid file-system path is correct. The PageRoot parameter sets the location where content is published. If the PageRoot value doesn't start with a slash, then the PageRoot parameter is relative to [ns_info pageroot]. Currently something is broken with the way that opts(page_root) is initialized. I tried modifying publish::publish_revision so that root path is set to the value returned by publish::get_page_root, and the publishing process worked fine.
I'm pressed for time now, but I'll try and track it down this week.