Это полностью зависит от вашего варианта использования.
Поскольку вы используете все статические значения в XML, лучше использовать опцию XML, чтобы Android загрузил массив и создал для вас адаптер. Вы знаете, какими должны быть значения, и они не изменятся.
Однако, допустим, вы работаете в приложении, которое позволяет пользователю выбрать, какую локальную учетную запись Google он хочет использовать для входа в вашу службу. Один из способов сделать это - заполнить Spinner учетными записями Google, добавленными в данный момент. Очевидно, что вы не можете определить их в XML, потому что вы не представляете, какими они будут, или когда они могут измениться. Здесь полезна динамическая загрузка значений и заполнение счетчика.
Конечно, если вы не хотите использовать XML, или вам нужен специальный адаптер, также можно просто сделать все это программно.