On further investigation I find that producing the list in either of the following ways works. I still do not understand why the version I used doesn't. I think it should.
// this works
Group {
List(viewModel.lineup) { PlayerRowView(player: $0) }
}
// so does this
ScrollView {
List(viewModel.lineup) { PlayerRowView(player: $0) }
}