So, what's wrong with this answer: "This returns all rows and all columns from both tables?"

I think the wording on the "correct" answer, "This returns all rows from both tables, replacing the values for columns with NULL when a row does not have a match in a table", was a horrible rendition of the Microsoft documentation which states that "Any time a row has no match in the other table, the select list columns from the other table contain null values"

I agree with you. Even the first option "This returns all combinations of all rows in both tables based on the columns joined in the ON clause." is correct as well IMO. Non-matching rows is part of a combination. I just think the options are a bit vague.