Отличный вопрос, я сам этого не осознавал, пока не попробовал, но это ожидаемое и преднамеренное поведение (только для массива, в котором объект является единственным элементом), как описано в комментариях на https://developer.wordpress.org/reference/functions/do_action/ И если вы посмотрите на код do_action (), вы увидите то же самое.
Кстати, ваш пример кода выдает ошибку при попытке установить свойство в массиве:
PHP Warning: Attempt to assign property 'name' of non-object in object-test.php
Кроме того, убедитесь, что вы всегда добавляете add_action до do_action для того, чтобы «зацепленная» функция имела какой-либо эффект.