Oi Marcus,
Novamente, voto na segunda opçõa :)
Olha só: se vc passar o nome dos objetos como parâmetros, estará de certa forma quebrando o encapsulamento novamente...
Passar um ID ou mesmo permitir um acesso via coleções, onde o usuário do objeto não tenha que referenciar os objetos filho/netos por nome, me parece melhor. Algo do tipo:
loObjetoPai.Items(1).Atributo = "Valor"
Esta abordagem é largamente utilizada por bibliotecas como ADO e MSXML...
Um abraço!