initially assumed having 256GB of memory was adequate for caching
That gives you 128GB of ARC. At that size, you're fine. The concern was that you can be sabotaging yourself. The ARC works by keeping track of statistics such as "Most Frequently Used" and "Most Recently Used". If you had, for example, just 100 megabytes of ARC, which could be only enough ARC space to hold very few blocks of data, the mere act of accessing a moderately full directory would be likely to overrun the ARC with read requests for all the metadata blocks. These would then immediately get knocked out when you tried to access a file in there, and then when you accessed another directory, THOSE would then get quickly knocked out too. This is referred to as thrashing. The MFU/MRU mechanism REQUIRES that blocks stick around for awhile so that ZFS can observe which ones gain multiple access requests. If that fails to happen, ZFS cannot make good decisions about which ones to shove out to the L2ARC SSD, and essentially pushes random crap out instead.
The goal is ideally to cache blocks (such as directories you frequently visit) and hold that in ARC. So you might have some blocks that you've accessed 50 times, others you've only accessed 10 times, some that have only been accessed 2-5 times, and then the ones that have been accessed only once. The ones we want to be evicted to L2ARC are the ones that have only been accessed 2-5 times. The 50x and 10x ones are really doing something significant for you. The ones that have only been accessed once are doing nothing for you. See how that works?