Since this changes the interface of /usr/ucb/ls it will need ARC review, I strongly recommend taking that path before worrying about the implementation.
In general I'm not sure why anyone would want to change the behaviour of /usr/ucb/* they are legacy and intended to be frozen in time - in my opinion anyway. If you do get ARC approval to make these interface changes to /usr/ucb/ls then I'd highly recommend option 3 on your list. While it will be complex to setup it does ensure that there is only one implementation of the complex functionality such as ACL setting and output. Out of curiosity why do you use /usr/ucb/ls rather than /usr/bin/ls or /usr/xpg?/ls ? -- Darren J Moffat