Как заменить array_map на функцию?
array_map это и есть функция, можно заменить на цикл foreach, например
Сделать функцию — означает сделать функцию, которую бы вы вызвали. В данном случае нет функции, которую бы вы вызвали :)

Буквально от вас хотели это:
<?php

function cutMenuTitle(array $elements, string $elementKey = 'item', int $limit = 15) {
     return array_map(function($item) use ($elementKey, $limit) {
        if (!isset($item[$elementKey])) {
              return NULL;
        }

        if (mb_strlen($item[$elementKey]) > $limit) {
            return mb_substr($item[$elementKey], 0, $limit - 3) . '…';
        }

        return $item[$elementKey];
    }, $elements);
}

$menu = [
    ['item' => 'Заголовок1 длинный'],
    ['item' => 'Заголовок2'],
];

var_dump(cutMenuTitle($menu, 'item', 13));
// [
//      "Заголовок1…",
//      "Заголовок2",
// ]