useSelector Это редакс. Если ты данные берешь из редакс, то тебе нужно использовать useSelector. Если тебе нужно вычислять какие то данные прямо в компоненте, тогда useMemo
Это разные хуки, они не взаимозаменяемы, каким образом ты перекрестил у себя их в голове - загадка
в случае
const items = useSelector(itemsSelector);
Ты берешь данные из общего стора
в случае
const items = useMemo(
() => Array.from(Array(counter1 * counter2).keys()),
[counter2, counter1]
);
Вычисляешь прямо в компоненте, на основании других данных, конкретно в твоем примере это тоже данные из стора (counter1 * counter2)
С точки зрения читабельности кода, всю бизнес логику лучше держать поближе друг к другу, и вычислять items в том месте где ты устанавливаешь counter1 и counter2 а результтат читать при помощи useSelector, поэтому первый вариант предпочтителен