We currently support SPDX license  declaration that fits many Free Software apps well (because picking a license is easier than making one up). To be exhaustive we should add support for non-standard licenses across the snapcraft->store->snapd stack.
As a way to boostrap the discussion I’d like to propse that we do the following:
meta/snap.yaml and meta/LICENSE
The existing license field should accept one more value (apart from valid SPDX expressions),
custom. This value is not a valid SPDX license but would be used as a trigger for the custom license text behavior. Once defined tools would look for the file
meta/LICENSE and ensure that it is non-empty.
Using this we could synthesize a valid SPDX description for custom licenses  that is not very pretty but should open the door for interoperability with other software that only speaks SPDX.
snapcraft publishing behavior
Snapcraft would have to validate
license: custom and ensure that
meta/LICENSE is non-empty. In addition
meta/LICENSE must not be present if one of the well-known licenses is used.
store side behavior
The store needs to collect the
meta/LICENSE file and provide access to the text through one of the existing APIs when asked about that field specifically.
snapd side behavior
(this is hand-wave territory now, please provide ideas)
Snapd could show existing license in
snap info, perhaps offering an option to show the custom licenses behind a new sub-command
snap license <snapname> (which would work for both well-know SPDX and custom licenses).