There is another method :
public AutomobileType createAutomobileType();
In JAXB, the xsd:complexType "AutomobileType" construct maps the class of the same name. It is meant to be the data structure that is equivalent to that XML schema type.
The JAXBElement<> is a (parameterized) wrapper type that associates the java object and the element name and namespace, and that's why its constructor takes an AutomobileType object as parameter in the constructor, in addition to the element namespace and the element name. The generated ObjectFactory "createAutomobile(..)" is just a convenience method to wrap that constructor, hard-coding your namespace and element name from your XML schema.
While this dichotomy is not all straight forward at first, consider that you could have another element by another name
They would be structurally equivalent, but the element name would be different. You would have another ObjectFactory method "createMotorcycle(...)".
You can create an un-named automobileType object for the purpose of building the contents of the xml element, and then tell JAXB exactly which XML element it should be represented as.
I can't recommend enough reading the JAXB documentation on the topic.