The array returned by EntityIdValue::getArrayValue should include the ID serialization in the "id" field. Inclusion of the "entity-type" and "numeric-id" fields should become optional in the future. But that is probably blocked on moving the serialization/deserialization code out of the DataValue object itself.
EntityIdValue::newFromArray should be able to construct a new EntityIdValue from the serialized value in the "id" field allone. Support for construction based on "entity-type" and "numeric-id" needs to remain possible, so old data remains readable.