array_unique(), when comparing objects, requires the SORT_REGULAR flag.  Otherwise, it attempts to convert the class to a string, resultng in a fatal error.  Another potential option, which may prove helpful, would be to utlize the __toString() magic method and return the ID.  That approach would be unprecedented and potentially hide developer errors and buggy behavior based on different expectations - which is why I haven't gone that route yet.