The answer actually in your question. Yes, it is about design. The documentation explains and gives small example about async pattern.
The client provides an async-oriented consumer dispatch implementation. This dispatcher can only be used with async consumers, that is,
IAsyncBasicConsumerimplementations.
In order to use this dispatcher, set theConnectionFactory.DispatchConsumersAsyncproperty totrue
So documentation has not enough information to answer your first question. However for second, if you want to use AsyncEventingBasicConsumer, you must to set ConnectionFactory.DispatchConsumersAsync property to true. It is design and rule of RabbitMq.
Also third question actually you answer yourself. Yes, for now it is about design of RabbitMq .net client.