вышло так, добавил таймаут в Box, чтобы успевало отанимироваться перед удалением
https://codesandbox.io/s/angry-payne-j0nhi
Показывает анимацию удаления именно последнего элемента
потому что здесь key=index смещался на один при удалении, был не "уникальным для блока", а зависел от позиции в массиве
{boxes.map((item, index) => (
<Box key={index} item={item} onDelete={onDelete} />
))}