I do not think it was a bad idea.
I think it is what was possible with the means available at the time it was implemented to solve a real problem. (That was before not in extras was invented.)
Probably, Poetry could deprecate using negative extras in the project section and only allow it (or alternatively not in extras in the tool.poetry section of the pyproject.toml) so that it is not used to create package metadata but only for locking.
I think, in lock files the negation is useful to describe the resolution for conflicting extras. Resolving conflicting extras is also the reason why Poetry allows negative extras at all. (This was implemented before PEP 751 introduced not in extras so that for Poetry, extra != "foo" and extra != "bar" is the same as "foo" not in extras and "bar" not in extras. Thus, I think not in must not be disallowed for extras and dependency_groups, which are markers for lock files.