Yes, they should, because they can be changed within dynamic scope by 'w/stdout etc, and this doesn't work unless they correspond to parameters in mzscheme, which need to be called to get their current value.
Using your dynvar hack, you could avoid this, but that's hardly "not changing the language", now, is it?