So I guess my answer is: I think they're at best meaningless, and at worst ambiguous, so I think removing them is the best option.
Known bug: both the new (remove) and old (ignore) behaviours will produce incorrect behaviour in the following situation:
{
"type": "object",
"properties": {
"foo": {"$ref": "#items"}
},
"items": {
"id": "#items",
"required": true
}
}
In that situation, "foo" should be required, but it won't be converted properly by any version of json-schema-compatibility.
Resolving this would require a bunch of extra logic (schema resolution) which could make resolution environment-dependent (that is, you can't convert a schema without fetching all schemas that it references). If you have any schemas that do this, give me a shout.
Geraint