'typeset' and family accept invalid identifiers
But GNU's env command supports space-including variable names and POSIX does not seem to disallow such behavior.
$ env 'a b=c' printenv 'a b' c
I would rather think the shell should support parameter expansion with arbitrary names, if anything should be fixed.
If that is an invalid expansion, then 'readonly' should not have succeeded either.
Allowing identifiers with spaces to be exported also does not seem like a good thing.