Se parti da un database "vergine" ti conviene, per velocità e semplicità, ragionare solo ad oggetti della persistenza e lasciare che al database ci pensi l'orm. Ragionare la composizione degli oggetti avendo in testa una visione da "database" piuttosto che ad oggetti, ti porterà più facilmente a complicarti la vita e i model di conseguenza.

Per il discorso FormType::choice, si vede che quel FormType specifico non ragiona ad entità ma ragiona "plain", ovvero ad esempio ti passa il valore selezionato preso da un'array di valori possibili. Viceversa il tipo "entity" ragiona ad entità/oggetti, permettendoti la scelta multipla o meno, e quindi al setter passerà una entità invece di un valore "primitivo"