In general, this sounds like a good idea, though it looks like you've run aground on some of the TP's assumptions about rigid tapping. I agree with Andy that extending G33 / G33.1 to use all axes makes more sense than a separate command.
There's no fundamental reason we can't do threading with the W axis, thought the aging TP architecture makes it difficult. As you've probably found, the rigid tapping data structures assume only XYZ motion, and there are checks sprinkled in the TP in a few places that check for ABC / UVW motion during tapping and throw errors.
Fixing this is difficult (at least with the version of the TP in master) because the TP does some weird stuff to compute distance along a path. For example, a linear move that has motion in XYZ and UVW: the TP just looks at the XYZ portion, and then figures out what the UVW motion is at the very end. If you want to synchronize distance along the W axis with the spindle, then the UVW motion has to be part of the path distance calculation in TP.
I've got an experimental branch that does the latter, though it doesn't merge with master cleanly yet.