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;