According to the Django documentation for JSONField you should indeed use default=list
because using default=[] would create a mutable object that is shared between all instances of your field and could lead to some objects not having an empty list as a default.
Please note that this does not only apply for django.contrib.postgres.fields.JSONField but for all other kinds of objects and functions in Python in general.
Quote from the docs:
If you give the field a default, ensure it’s a callable such as list (for an empty default) or a callable that returns a list (such as a function). Incorrectly using default=[] creates a mutable default that is shared between all instances of