There is only one instance of the event bus. I think you're confusing server- and client-side examples. The event bus you're referring to that is instantiated is client side Javascript. In the case of client side JS, the event bus that you instantiate is a wrapper around a SockJS client on the client side which communicates (using the address provided) with an event bus bridge on the server side. Essentially, the event bus bridge is a Vert.x provided helper that allows client code to send messages to addresses within a server side Vert.x cluster over web sockets. See the event bus bridge documentation for any language for a better explanation.
Within verticles you should only ever have to use the vertx.eventBus which is simply a wrapper around the single Java-based event bus for the current Vert.x instance. In Vert.x verticles you should never have to create an event bus instance. That is only the case in client side JS AFAIK. In fact, the core Java API doesn't provide any API for creating an event bus. It only exposes a single event bus that's available within each verticle through vertx.eventBus(). The only reason client side JS event buses need to be constructed is because a URL to the event bus bridge must be provided for communication. Does that make sense?