Right now, developers must provide fully initialized ServiceContext or an empty one is created.
Moreover, this behavior is not consistent across web services implementation. JSONWS supports pre-populating of provided ServiceContext, but creates empty instance when not specified. SOAP (Axis) either deserializes sent ServiceContext or create empty one.
Some portal services expects ServiceContext to be populated at least with portal context ("/c") and portal URL.
ServiceContext object should be always created with ServiceContextFactory and provided values (if any) merged with defaults.