Yeah, well, L2ARC was likely added to ZFS more than 15 years ago, back when SSDs were in their infancy. Unlike some ZFS vDev types, L2ARC was designed to be easily removed. And if it fails, no data loss, just potentially reduced read speed.
I agree. Many people think L2ARC, (and possibly ARC), to behave as a Tiered Storage for ZFS. It sort of does, but the designers understood that some items read, are just read once. Like video files when streaming them. Thus, metadata would be more useful to store in ARC & L2ARC.
Even a simple copy out of a file, like a video file, does not make sense to cache it in ARC or L2ARC. (At least to ZFS.) The intent behind both is repetitive read accesses, over a shorter period of time.
You absolutely do NOT want ZFS scrubbing to flush ARC, (and potentially L2ARC). I am guessing you don’t mean ZFS scrubbing in the paragraph above. Did you mean video file seeking back and forth, (that I have heard some video editors call scrubbing)?
ARC is supposed to be smart, but in a general purpose way. Lots of corner cases exist that either need straight forward tuning using:
primarycache=all|none|metadata
secondarycache=all|none|metadata
Or the in depth tunables which can change function per ZFS version;
man/man4/zfs.4
Agreed, with the caveat that you have enough RAM for the pointers. Too little RAM and too large of a L2ARC device, ends up flushing ARC entries BEFORE ZFS thinks they should hang around longer, like in the L2ARC device.