This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I think you are right about that...I think in most cases, when a data structure is expected, it should be an empty one rather then a null.
Also the inconsistency in the getUserPrinciple() in the servlet spec returns null when no principle is present, but in EJB it returns an empty principle object. (There is also a naming inconsistency, to top it all off, in EJB the same method is called getCallerPrincipal() ).
I don't think the spec architects collaborate that much.
Anyway, that just seems strange to me, uniformity is lacking in most specs.