В чем разница, передаю я в качестве свойства компоненту функцию, или функцию,возвращающую функцию, как в вашем примере?Никакой разницы нет. Но вы передавали не функцию, а результат её выполнения (undefined), а сама функция вызывалась сразу при рендере (и вызывала рендер снова и так по кругу).
Почему передается n, а не n.id? Ведь нужен только id, чтобы отфильтровать массивПотому что removeEducationDiv принимает объект в первом аргументе и автоматически достаёт из него поле id.
Я заменил передачу функции на "()=>функция" в обоих кнопках, и теперь при нажатии AddButton не происходит вызова ни одной из функций. Почему такое может быть?Попробуйте не бездумно всё править, а разобраться зачем вы это делаете. С AddButton у вас всё было нормально.