Newer generation of products have a major enhancement in terms of table lookup size. The user is now allowed to allocate a certain amount of resource to a given lookup table. You have the opportunity to select the configuration that suits you the best (more L2, more L3, etc.), with the following CLI command:
config forwarding internal-tables [l2-and-l3 | more [l2 | l3-and-ipmc]]
You can check your actual configuration (default is l2-and-l3) with the CLI command:
show forwarding configuration
As for the table itself, this is still hash table. There was an enhancement for L2 to offer better hash in some previous EXOS release, I think it was introduced in 15.3.2 on specific platforms, and generalized in 15.6. In particular with G2 platforms, the architecture is different and various algorithms are at play, resulting in a good table utilization.