Olá Gabriel.
Pequenas soluções podem nem sequer usar banco, usando apenas arquivos locais, na memória permanente. Mesmo que use um banco, podem haver configurações locais que você não quer guardar em ficheiros txt, interpretáveis por humanos.
O próprio banco pode guardar o objeto na sua forma serializada, e não em dicionários de dados legíveis por humanos.
Também na comunicação entre diferentes computadores ou programas, pode ser necessário enviar os objetos propriamente ditos, logo serializá-los torna-se muito útil.
O SerialUID serve para que os programadores mantenham a sanidade (resolvendo pepinos de incompatibilidade ou mitigando-os) entre a gestão de diferentes versões que você não tem como controlar devido à não atualização por parte dos usuários ou outros desenvolvedores na outra ponta. Repare que, como o professor exemplificou, definir o SerialUID não previne o problema de incompatibilidade, mas permite identificar o problema e até em tempo real as versões mais recentes dos programas poderão se adaptar e deserializar/serializar para versões mais antigas.
Versionamento de código, por meio de Git, é imprescindível para você manter diferentes versões do seu código, mas não tem como o versionador gerir as versões que os usuários e outros desenvolvedores estão usando do seu código (compilado ou não) e dos objetos que eles serializam e deserializam.
Abr,
José