PostgreSQL jsonb_set performance
Every UPDATE in PostgreSQL creates a new version of the row.  There is no in-place update.  So not only would a new JSON be created, but also all other columns in the table would be copied.
Updating part of a JSON is not common in relational databases, or at least it shouldn't be.  If you feel the need to do so, you have chosen the wrong data model,  and you would be much better off using table columns instead of JSON attributes.  If you then split the data across several tables using a process called “normalization”, an UPDATE doesn't hurt quite as much.