I can create an empty service using gis.content.create_service
This empty service has
layers=[]
tables=[]
I can get the service item's FeatureLayerCollection and use .manager.update_definition to update the definition of the service including service-level properties.
But, how to create a new feature layer (or table) and add it to the service's definition?