Further experiments/results:
Couple #3 was doing a fine job raising their fry in the 20g and Couple #2 had a big brood up in the main tank to defend. The Discus would eventually get to them, and my other 20 is in use as an isolation tank, so I had to get creative.
I put an egg crate divider in (not anywhere near able to keep fry from passing through, but adults can't fit) and netted out most of Couple #2's fry.
They kept to themselves in a very tight group and #3's free swimmers stayed on their side of the egg crate. It was very interesting.
I started to worry that batch #2 wouldn't be happy without a parent, so I went and got their parents, each of whom had a few remaining fry in their mouths. First the male, who immediately scooped up the rest in the tank, then the female.
Then I watched. I call it Orangehead Theater.
Eventually some curious #3 fry swam over to #2's side. The male, who had 95% of the fry, decided after a while to chase them down and scoop them up. This is basically the same as when couple 3 adopted some of Couple 1's fry... added it to the existing mouthful.
But it seemed clear that he knew they weren't his. He'd square off and posture through the eggcrate with the other male, and the other male at one point grabbed hold of the egg crate with his mouth and sucked his own baby back over.
I started to wonder if Male 2 forgot Female 2, who had only a few fry in her mouth, was his wife. He kept chasing her and head butting her (couldn't bite, obviously, with a mouthful of fish). At one point she had had enough and started going back at him, and they were lip locking without opening their mouths, which was funny. Still, they stayed together, even with plenty of opportunity to separate.
Knowing that I couldn't just keep a divider between two sets of parents, I netted Couple 3 out and took them back upstairs. No more fun with parenting, but they had a good run. Their fry have figured out how to eat even regular size bloodworms, so they don't need parents. Another time I'll keep them together for a month or more, the way Peter has.
Then I pulled out the divider, thinking maybe I'd separate the male and female. They still stuck together.
After a while she spit. I netted her out and took her upstairs. But not before noticing something: She could tell the older fry weren't hers.
As soon as I got back downstairs, the male spit his giant brood out. He kept them close for a while, chasing away the school from #3, but eventually his started spreading out. They all got mixed together and jumbled.
Then he started scooping up whichever fry happened to be nearest. Again, he seemed to be able to taste a difference. If he scooped an older one (the difference is only about a week) he'd spit it back out with disdain.
He went off on his own to the back of the tank to think... Apparently he made up his mind, so he darted out with a purpose, grabbed a bigger fry, and chewed it up.
That was that, and back in the main tank he went.
The swarm, which to the best of my knowledge contains ~7 from Couple 1, ~30 from Couple 3, and now ~50 from Couple 2, is coexisting happily now without any fry on fry violence. They eat ground up flake and bloodworm and baby shrimp.
So that was fun.
It seems that geophagus can tell another batch of fry apart from their own by the taste. But only when their mouth is empty. Otherwise, if holding, they will adopt and parent another couple's fry.
I am not sure how to use this information, but it's pretty cool to know.
The end.