Я тоже затронул эту проблему, но в моем случае я получал один из массивов из Core Data NSFetchedResultsController. Я подозреваю, что это связано с тем, что исходный массив взят из Objective-C.
Я смог исправить это, поместив массивы в новый массив:
private func updateBeacons(_ rangedBeacons: [CLBeacon]) {
guard beacons != rangedBeacons else { return }
let difference = Array(rangedBeacons).difference(from: Array(beacons))
// ...
}