Repository
Used to handle collections.
What is the reason for these existing?
These are used to group a series of Unity ScriptableObjects or services into easily accessible collections for the system to use.
How are they different to the other Structure Types?
These can be persistent or runtime based types which provide a common way of interfacing with a large number of objects within the system.
What should I be using them for?
They should be used to provide easy access to objects which are needed by the system or for persistent data (for example they are used by the behaviour tree system to load the current trees on load into memory and to provide a common access point though a service).