You can remove the cost variable from the equation. Check
They offer open source code for numerous cores, including a MAC PHY with associated test bench, and documentation. According to the "Status Log" for this core, it has been already tested in HW, and has been used in several commercial implementations.
The reasons for implementing functions in FPGA vs discrete IC implementation, are all very generic :
 Probable reduction in IC count, probable associated cost reduction, and probable increase in reliability.
 Eliminate future redesigns of PWB when an external part experiences end-of-life.
 Ability to "contain" majority of digital logic within single device simplifies clock domain management for synchronous design - ie. moves from a PWB/chip-to-chip problem to a single chip problem .. where it is much easier to manage.