Dzieje się tak, ponieważ operator ->> pobiera element tablicy JSON jako tekst. Potrzebujesz rzutu, aby przekonwertować jego wynik z powrotem na JSON.
Możesz wyeliminować to nadmiarowe rzutowanie, używając operatora -> :
select person->'dogs'->0->'breed' from people where id = 77;