Well, the short answer is: NEVER. But given how often I see people ask about it, I'll try to expand my answer a bit…
Autovacuum was added LONG time ago (in 7.4, as pg_autovacuum). Since then, there were many changes related to it.
These days, hopefully, we no longer see someone saying that they have to disable autovacuum due to performance issues.
But I still see people that say that they have to run daily/weekly vacuum because “autovacuum is not enough". Is it really?
On 6th of April 2020, Amit Kapila committed patch:
Allow autovacuum to log WAL usage statistics. This commit allows autovacuum to log WAL usage statistics added by commit df3b181499. Author: Julien Rouhaud Reviewed-by: Dilip Kumar and Amit Kapila Discussion: https://postgr.es/m/CAB-hujrP8ZfUkvL5OYETipQwA=e3n7oqHFU=4ZLxWS_Cza3kQQ@mail.gmail.com
Some time ago I wrote blogpost which showed how to list tables that should be autovacuumed or autoanalyzed.
Query in there had one important problem – it didn't take into account per-table settings.
Recently I was in a situation where autovacuum couldn't keep up with changes. To solve the problem I finally decided to manually vacuum analyze all tables (manual vacuum/analyze is faster than one ran by autovacuum daemon).
But it irritated me that I didn't have ready way to check which tables are waiting for autovacuum to work on them.
So, I wrote it.