But they still can be different. Why do we prefer index and not data? Why do we prefer data over index? Isn't it a bug that headers mismatch?

If you drop this check we will never know that they are different, and in fact eblob_merge will drop such record, so it can not be considered 'ok' anyway