Reading list size limits are enforced by doing a count(*) before every insert, which is problematic performance-wise. Per discussion with @jcrespo the best alternative would be to keep track of list sizes in a separate field, ie. add reading_lists.rl_size, make sure it's incremented on insert and decremented on delete, backfill in production, and replace count(*) checks with reading that field.
We don't do the same for list number limit checks as the limit there is 100 lists per user, and the suggested upper limit for number of rows a query should touch is something like 1000.