The following appears to be what is happening. Given that appearances can be misleading, it may actually work differently.

As it stands now, the server tells the client to display an aoe box for whatever type is incoming, then does a check to see who is in the target area. This poses two problems, resulting in the client showing the aoe missed, while the server registers a hit:

1) The client doesn't display the aoe box until the message is received, effectively starting at server time + ping. The aoe box lasts the duration, ending at server time + ping.
2) The server checks the target areas immediately. This can be expressed as server time - ping on the client.