Lightning calendars can be created using standard preferences and then injected using the mechanisms you described (Thunderbird.cfg, default.js, all.js, user.js, ...). These are the mandatory prefs:
calendar.registry.{uuid}.type = "caldav"
calendar.registry.{uuid}.uri = "https://path/to/calendar/"
calendar.registry.{uuid}.name = "My Calendar"
And these are optional:
calendar.registry.{uuid}.cache.enabled = true
calendar.registry.{uuid}.color = "#330099"
// id1 must be the key as in prefs.js for the email identity.
calendar.registry.{uuid}.imip.identity.key = "id1"
calendar.registry.{uuid}.readOnly = true
calendar.registry.{uuid}.refreshInterval = 30 // minutes
// visible, i.e checked in the calendar list
calendar.registry.{uuid}.calendar-main-in-composite = true