Bom, esse ID serve pra dizer se uma versão da classe é compatível com a outra. O que isso quer dizer?
Vamos supor que você tem uma classe Pessoa com um atributo nome, que implementa java.io.Serializable. Essa classe vai ter sim um id associado a ela, quer você defina ou não, se tem dúvidas, é só usar a ferramenta serialver que vem na JDK.
Se um dia você quiser adicionar um atributo sobrenome à mesma classe, você precisa decidir se quer que a versão seja atualizada pra funcionar, ou se os clientes que tem a versão só com o nome ainda podem utilizar a classe sem problemas.
Se você quer que seja atualizado é simples, basta não definir serialVersionUID nenhum, e durante a desserialização, será lançada uma InvalidClassException
Agora se quer que a versão nova seja compatível com a antiga, basta definir o mesmo serialVersionUID para as 2 e pronto.
Agora quanto a ser boa prática ou não, concordo com o Hébert. Ainda mais que se você ficar atualizando o serialVersion cada vez que mexe na classe, está tendo o mesmo resultado que teria se não definisse nada