Some of the differences may be in when you are trying to reference a face/edge to build off of, not just about the primitive function being used.