Oi Rodolpho, tudo bem?
Desculpe a demora em retornar.
A lógica por trás da conta de sobra é simplesmente subtrair o índice atual do item (mês ou dia) por 0 ou 1, dependendo se o índice é par ou ímpar.
O método .map() é usado para iterar sobre cada elemento do array retornado após a execução do método .split(), que divide a string em substrings usando o separador informado (no caso, "-") e retorna um array com as substrings.
Dentro da função de callback do .map(), a variável item representa cada substring do array e indice representa o índice correspondente a cada substring no array.
A expressão indice % 2 é usada para determinar se o índice é par ou ímpar. Se o índice for par, a expressão indice % 2 será igual a 0. Se o índice for ímpar, a expressão será igual a 1.
A conta de sobra item - indice % 2 é executada para subtrair o índice atual por 0 se o índice for par, ou por 1 se o índice for ímpar. Isso faz com que os meses sejam decrementados em 1 para cada índice ímpar (já que os meses são indexados em 0) e os dias sejam decrementados em 1 para cada índice par (pois o primeiro dia do mês é indexado em 1).
Dessa forma, os valores de mês e dia são ajustados para que possam ser usados corretamente na criação do objeto Date.
Um abraço e bons estudos.