This is a very comprehensive writeup! You might want to post it in the game dev forum as well, for those who may start off using Unity there.
Would another way for MonoBehaviours to communicate with each other involve dispatching events? I haven't used Unity, but I've done something similar in Flash where one object would dispatch an event that only a specific class of objects was listening for (of which there would be only one instance thereof), so it would effectively be like the two objects communicating directly with each other without knowing about the other's presence. I believe that an event dispatching system exists in Unity (or it could be faked with a singleton if required), so where would an equivalent method figure in this list?
LiteraryWho
It's cool seeing programming advice making it's way into NG. Keep up the great work :D
MonoFlauta
Thank you!