as for why? simple ... smaller motherboard area , no need for that ugly fan on chipsets on threadrippers and Ryzen 3 X570 (which comes from the usage of Gen 4 Lanes in the chipset) ...
It's worth pointing out that the chipset used in X570 boards is actually the same IO chip found inside the Zen 2 and Zen 3 AM4 processors, just manufactured on a 14nm process instead of 12nm. So the CPUs do in fact have the chipset inside the processor itself. The one on the motherboard is just there to provide additional connectivity, like more PCIe lanes. One advantage this has, is that it opens up the possibility of having other chipsets for less expensive boards, such as B550 or A520, which don't provide additional PCIe 4.0 lanes. Not everyone needs PCIe 4.0 for all slots, after all, and this allows people to mix and match the CPU they want with the motherboard connectivity they need.
Having all that connectivity handled within the processor would require every CPU to include a much larger IO chip, whether the motherboard utilizes those additional lanes or not. The CPU and socket would also need to be larger, with significantly more pins than AM4, and the processor's heat output would be increased a bit. There are also limits to the length of traces on motherboards for PCIe 4.0 slots without boosting the signal along the way, and I suspect having the chipset closer to those slots may help alleviate that on larger boards. So, moving all connectivity to the IO chip on the CPU might not be ideal, at least for mainstream platforms like AM4.
As for why they went with an external chipset for Threadripper and not for Epyc, perhaps they felt it gave motherboard manufacturers a bit more flexibility with their designs, or the potential for better compatibility with future generations of hardware.