Как сравнить 2 многомерных массива и сохранить очередность?
По коду вообще непонятно, что с чем сравнивается. Если массивы находятся в переменных $result_days и $result2, то выведется ячейка для каждой пары элементов (т.е. общее количество ячеек будет равно произведению размеров массивов). Вряд ли вы это задумывали.

По основному вопросу: искать что-то в многомерном массиве без индексов малоприятно. Сделайте ключи в массиве, с которым вы сравниваете, например:
$result_days = [
  "2019-04-27" => [ "id" => "123", ... ],
  ...
];

foreach ($result2 as $i2) {
                if (array_key_exists($i2['date'], $result_days) {
...
Соглашусь с оратором выше. Скорее всего вы перепутали массивы и не в там смотрите ключи. Перегоните массив в хэш-таблицы, типа так

$result2 = [
    '2020-04-01' => ['users_id' => 19],
    '2020-04-02' => ['users_id' => 133],
    ....
]


$result_days = [
    '2019-04-27' => [
        'id' => 1,
        'off_id' => 133,
    ],
    ....
]

А потом простым перебором проверяйте
foreach ($result2 as $day => $i2) {
    if (isset($result_days[$day])) {
        echo "<td class='vihodnoy'>" . $i2['date'] . "</td>";
    } else {
        echo "<td class='obichniyDen'>" . $i2['date'] . "</td>";
    }
}