ELM327 diagnostic adapters allow to use only predefined protocols and communication speeds.
One of the main drawbacks is that ELM327 does not allow to send data packets larger than 8 bytes. In most cases, packets sending to the Control Unit are less than or equal to 8 bytes, but in some cases, the diagnostic software may need to send larger packets, and ELM327 simply won't send them.
This limitation reduces the capabilities of diagnostic software in K-line mode when a large data packet needs to be sent from diagnostic software to ECU, for example when performing special procedures such as injector coding or parameter coding. Therefore, ELM327 is not suitable for such special procedures in K-line mode. But in CAN mode, this limitation does not affect data transmission, so in CAN mode, any special procedures can be performed with ELM327.
Also ELM327 does not fully support KWP 2000 protocol at data link layer, specifically KWP 2000 headers with no address information (one byte header). But DAP4CS implements an original method, which allows ELM327 to communicate with Control Unit using this variant of KWP 2000 protocol. However data transfer rate using this method may be low.
Some Chinese ELM327 adapters have bugs in firmware. They use wrong KWP 2000 Fast Initialization timings (TiniL), which are not in range described in ISO 14230-2 specification, therefore communication with some Control Units may not be possible. But most of Chinese ELM327 v1.5 adapters based on PIC18F2580 or PIC18F25K80 are free of this bug. So you should use "right" ELM327. Read internet forums and recommendations how to choose it.
On the latest models of cars, where the CAN network has a Central Gateway, the ELM327 version earlier than 2.1 is also not quite suitable. The D-CAN bus (Diagnostic CAN bus) on these vehicles is a bus with two nodes. All CAN nodes must generate CAN acknowledgments (CAN ACKs), but ELM327 older than version 2.1 cannot generate CAN acknowledgments (CAN ACKs) in CAN bus monitoring mode, which can sometimes be used. Most Chinese ELMs only claim to be v2.1 but actually have the ELM327 v1.3 AT command set.
If you choose between wireless versions of ELM327, Bluetooth version is recommended, because it has lower input/output latencies comparing to Wi-Fi version. Some Wi-Fi versions of this adapter have low-quality Wi-Fi modules, which leads to disconnections or critically large delays.
Despite its limitations, the ELM327 can be used to diagnose most modern vehicles. The main advantage is the low price and wide distribution of Chinese clones of this adapter.