So Cable Modem --- cable --- Airport --- Wireless -- MacBook. I have the same issue. It is single hop and compared to directly connecting to the cable modem the airport adds up to 300ms delay every now and then.
I would expect some spiking on wireless. It is the nature of the beastie.
You need to understand wireless has single channel and half duplex. Translating that, wireless can talk to one client at a time.. and it can only Tx or Rx not both. (Ethernet via a switch can Rx Tx and talk to multiple clients at the same time).
Due to the time slicing when you share wireless it will always spike. The Mac driver can also contribute to the issue as it searches for other wireless networks. Wireless is great for data.. it is less great for time sensitive material like streaming.
If I have to throw a cable for each device ... are we back in the 90s ?
Wireless is not much different to 90s.. only the links are faster and the lies about its speed are bigger.
However I do think you need to pursue where the problem is at a couple of levels.
Run the apple wireless diagnostics.
Particularly scan for all the wireless in your area.

Look particularly at how many AP you have around you and the signal and channels they are on.
2.4ghz is saturated these days. It is hard to get decent signal.
Also the current link which you can get from wireless diagnostics. Or you can get directly from option-click wireless fan in the top menu.

When I do this I get exactly what you do.. ping spikes.
ping www.aanet.com.au
PING aanet.com.au (203.24.100.73): 56 data bytes
64 bytes from 203.24.100.73: icmp_seq=0 ttl=59 time=90.342 ms
64 bytes from 203.24.100.73: icmp_seq=1 ttl=59 time=64.164 ms
64 bytes from 203.24.100.73: icmp_seq=2 ttl=59 time=111.135 ms
64 bytes from 203.24.100.73: icmp_seq=3 ttl=59 time=63.742 ms
64 bytes from 203.24.100.73: icmp_seq=4 ttl=59 time=100.118 ms
64 bytes from 203.24.100.73: icmp_seq=5 ttl=59 time=64.567 ms
64 bytes from 203.24.100.73: icmp_seq=6 ttl=59 time=85.520 ms
64 bytes from 203.24.100.73: icmp_seq=7 ttl=59 time=68.588 ms
64 bytes from 203.24.100.73: icmp_seq=8 ttl=59 time=118.988 ms
64 bytes from 203.24.100.73: icmp_seq=9 ttl=59 time=64.720 ms
64 bytes from 203.24.100.73: icmp_seq=10 ttl=59 time=105.589 ms
64 bytes from 203.24.100.73: icmp_seq=11 ttl=59 time=63.835 ms
64 bytes from 203.24.100.73: icmp_seq=12 ttl=59 time=73.712 ms
64 bytes from 203.24.100.73: icmp_seq=13 ttl=59 time=64.766 ms
64 bytes from 203.24.100.73: icmp_seq=14 ttl=59 time=84.302 ms
64 bytes from 203.24.100.73: icmp_seq=15 ttl=59 time=64.021 ms
64 bytes from 203.24.100.73: icmp_seq=16 ttl=59 time=232.023 ms
64 bytes from 203.24.100.73: icmp_seq=17 ttl=59 time=64.020 ms
64 bytes from 203.24.100.73: icmp_seq=18 ttl=59 time=82.299 ms
64 bytes from 203.24.100.73: icmp_seq=19 ttl=59 time=81.938 ms
64 bytes from 203.24.100.73: icmp_seq=20 ttl=59 time=64.780 ms
64 bytes from 203.24.100.73: icmp_seq=21 ttl=59 time=65.004 ms
^C
--- aanet.com.au ping statistics ---
22 packets transmitted, 22 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 63.742/85.371/232.023/36.186 ms
That is because my wife is watching Netflix.. (now and forevermore).
If I swap to ethernet on airport nearby with wireless OFF.
It is still spiking a bit with load on the modem.. (running near full capacity). But it is more consistent than wireless.
ping www.aanet.com.au
PING aanet.com.au (203.24.100.73): 56 data bytes
64 bytes from 203.24.100.73: icmp_seq=0 ttl=59 time=64.589 ms
64 bytes from 203.24.100.73: icmp_seq=1 ttl=59 time=101.224 ms
64 bytes from 203.24.100.73: icmp_seq=2 ttl=59 time=75.735 ms
64 bytes from 203.24.100.73: icmp_seq=3 ttl=59 time=91.942 ms
64 bytes from 203.24.100.73: icmp_seq=4 ttl=59 time=64.203 ms
64 bytes from 203.24.100.73: icmp_seq=5 ttl=59 time=64.403 ms
64 bytes from 203.24.100.73: icmp_seq=6 ttl=59 time=64.284 ms
64 bytes from 203.24.100.73: icmp_seq=7 ttl=59 time=64.893 ms
64 bytes from 203.24.100.73: icmp_seq=8 ttl=59 time=64.574 ms
64 bytes from 203.24.100.73: icmp_seq=9 ttl=59 time=71.829 ms
^C
--- aanet.com.au ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 64.203/72.768/101.224/12.643 ms