One of the good reasons is that I wanted to be able to show automatic inspectors for any object type even for those that do not derive UnityEngine.Object or live on a UnityEngine.Object.
If you take a look at EditorUtils.cs at ShowAutoEditorGUI, which is responsible for starting an inspector, you will see that the parameter is a System.Object.
Furthermore the GenericField (which shows a single entry) function directly bellow the ShowAutoEditorGUI also takes a System.Object as a parameter along with a Type which there are many cases in NC, in which the type provided there is not the same as the type of the value.
In the end it’s about having full control.
If you want to experiment on your own, you can start doing so in the ShowAutoEditorGUI 🙂
By the way, the example you posted with the ‘Eye’ class, if you use an Eye field in a Task, the BBFloats within will be drawn correctly. They will indeed not draw correctly if you use the BBFloat in a typical Monobehaviour inspected by Unity, but BBVariables are to be used in Tasks and Nodes.
In any case, I know what you are talking about, and I will see to supporing PDs somehow.