Has nothing to with Kodi, this is basic networking stuff.
The WOL magic packet is defined with in the constraints of layer 2 (Data Link Layer, read hardware/drivers) that is send out as a broadcast on your local LAN over the network interface from the machine that requested it.
Through a VPN you have a layer 3 connection (it’s virtual not physical). The upper layers do nothing with a WOL package at all or hence a computer could never go to sleep as he has to process all the data instead of letting a network interface do it.
Basically broadcasts are not routed between networks (for obvious reasons) and are usually not tunneled (for similar obvious reasons). Beside that WOL has nothing to do with IP traffic to begin with, though of course the magic packet will be encapsulate in it as it is send down from the application to the network interface.
And here a potential workaround kicks in:
Depending on the VPN client/server you might have an option to forward ip helper traffic. That basically means it will pack UDP 7 (Echo) and UDP 9 (Discard) into the tunnel. WOL tools usually use these ports to encapsulate a WOL payload.
Your WOL tool needs of course to send a direct IP traffic to the host (instead of a broadcast) you want to wake up - many tools exist to create such packages that deviate from the standard WOL package for exactly this reason.
Then the VPN server would take it, unpack it, the network stack sees the broadcast and sends it out over the local LAN with the MAC address (aka hardware address) of the machine to be woken up throughout the LAN as the payload just like it originated from the VPN server directly.
Same principle as WOL over the Internet, but in your scenario your adding a VPN to mix as well that need to tunnel the traffic.
So it all comes own to: what VPN are you using? And naturally your router. All this has nothing to do with OSMC or Kodi. It’s all networking/VPN stuff (Kodi is layer 7)
Another cheap workaround if you do not have your own VPN setup would be: run a service on a machine that is always on - e.g. a NAS. When it receives some traffic it sends out a WOL over the local LAN. That will always work. A listener on a TCP port that sends, when a command is received, a WOL package out to the LAN.