Това е така, защото оператор ->> получава елемент на JSON масив като текст. Имате нужда от cast, за да преобразувате резултата му обратно в JSON.
Можете да премахнете това излишно прехвърляне, като използвате оператор -> :
select person->'dogs'->0->'breed' from people where id = 77;