Второй вариант [$pivot]
должен работать нормально:
php > print_r(array_merge($less, [$pivot], $great));
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
)
У вас есть какие-то ошибки, когда вы это делаете? Также было бы здорово иметь версию PHP, которую вы используете.