Risposta breve: qualsiasi cosa renda il tuo codice più facile da leggere, più facile da mantenere e più facile da testare, indipendentemente dalle regole che puoi trovare su Internet.
Risposta un po 'più lunga:
Se sono un elemento che dovrai visitare ai fini del test, probabilmente dovresti dargli un ID. Gli elementi con identificatori univoci sono molto più facili da trovare con strumenti automatici rispetto a quelli senza.
Penso anche che gli ID ti aiutino anche a organizzare concettualmente il tuo codice. Ad esempio, tutto nell'intestazione potrebbe andare all'interno di un div con l'id di 'page-header', il corpo in un div chiamato 'page-body' e il footer in 'page-footer'. all'interno del corpo principale potresti avere una sezione di navigazione e una sezione di contenuti, quindi è logico avere una divisione denominata "navigazione di pagina" e "contenuto di pagina" e così via.
Anche se in realtà non utilizzi questi id in nessun altro luogo, questo contribuisce a rendere la pagina un po 'più auto-documentante. Non è necessario farlo per ogni elemento, ma aiuta quando lo si utilizza per ogni elemento o sezione principale della pagina. Inoltre, come indicato nel primo paragrafo, pone le basi per rendere più semplice testare la pagina con strumenti automatici.
La linea di fondo è questa: non cercare di trovare regole dogmatiche da seguire. Invece, cerca di creare codice che sia facile da leggere, facile da mantenere e facile da testare.