So it seems like that block from WP_Query actually needs to be moved entirely into the WP class. Is there even a reason to have that in WP_Query, other than for direct use of WP_Query for preparing a comments feed *without* using withcomments? (Fine with keeping it, just want to make sure we look at it from all angles.)

Because of the block in WP_Query, we should use the same logic in the WP class. If comments-*, strip it and set withcomments.

Looking at this again, I actually think the logic in and location of the first patch was closer to ideal than the second patch.

WP_Query specifically sets withcomments to 1 if the feed query variable contains comments-, even if withoutcomments is set. It overrides withoutcomments, which is only consulted when withcomments is not specified and we are dealing with a singular item.

So, the logic needs to be moved up a bit, to ensure the behavior is the same.

I don't think there is any unit tests here; that would be good to have in the future.