Indeed, Otto, lists can contain block level elements. I did overlook that for some reason.
However, I think you’ll also agree that lists do imply some kind of relationship between its items, and with widgets there is none.
Re: function_exists
: I think of it as a ‘goto-like’ solution because if you have the same function defined by a user after the initial function_exists
call, it will call the original. In other words — the output of function_exists
depends on the order of the code.
Regarding the rest — I agree that there is no single argument for either of the approaches and therefore both are in a way viable.