Oi Mario,
1) Gerar a toda hora: sempre que instancio um novo conteúdo (a partir do disco, também), gero um boundary associado a ele. Isso implica que um clone não tem necessariamente os mesmos boundaries que o original (usando o exemplo de clonagem do enunciado).
2) Gerar somente nos casos de criação de conteúdo que não era conteúdo de e-mail ainda. Por exemplo, quando eu escrevo um texto num editor e dou send, ou quando eu anexo um arquivo (já estou pensando no alto nível aqui). Nos casos restantes, eu reaproveito os boundaries antigos.
O boundary é algo que se materializa na relação entre conteúdos - i.e., quando você insere um conteúdo dentro de outro. Você poderia atrasar a "geração" do boundary até o momento em que ele é inserido dentro do primeiro conteúdo. Para conteúdos que já tinham boundaries (os que você leu do disco), tome cuidado. O ideal é gerá-los novamente apenas caso esses conteúdos sejam inseridos dentro de outras mensagens (já que você não pode confiar nos boundaries que você lê das mensagens). Para tanto, você poderia usar a mesma regra do conteúdo sem boundaries - atrase a modificação até o instante em que ele é inserido dentro do primeiro conteúdo.
Abraços,
-- Giuliano Mega <giuliano*ime:usp:br>