From a systems integration perspective, is it common practice to use ESB (enterprise service bus) middleware technologies over EJB for mid-to-large sized applications, or is the use of ESB middleware mainly reserved for BPM (business process management) applications?
In my humble opinion, ESB is not just for BPM.
Using ESB allows you to create a distributed architecture.
Benefits of distributed architecture are well known (for example - scalability).
Of course, ESB is not the only solution out there to achieve this,but one of the solutions available.
Pay attention that if you need a distributed architecture , which does not have lots of services + differentiation of protocols (i.e - usage of HTTP, JMS, and more...) you should consider another solution.
ESB can help you when you have many services, which use different protocols (for example, imagine a component that accepts, and another component listening on JMS queue - you might need to send a message which is "logically" the same, but should be once said to the first service, and later on should be sent to the second service -
an ESB will help you to perform this task).
I would recommend you to read more on this subject at this blog.