Don't know of a lisp to do that, but there's a tip at http://www.afralisp.com/tips.htm which shows how to generate a list of all layer names:
(defun tablelist (s / d r)
(while
(setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))))
Example (setq all_layers (tablelist "LAYER"))
This might be a starting point. The 2 group is the layer name -- you could generate the other info from other group codes, then figure out how to put that in a table.
Long ago (R11 or so) in an office that refused to standardize layers or even plotting methods, I used to do something sorta similar. Kept a block in the drawings whose attributes represented responses to PLOT command prompts. Had a lisp which extracted the info and fed it to the command, so in effect the plotting configuration was stored in the drawing.