Hey there buddy,
There's one thing that will always make GRE a better choice than VLAN is physical switch configuration. When you use VLANs, you have to setup your switch ports for trunking. Also, you have to ensure those VLANs exists on your switch.
Even more, let's say you're in my case whereby you have a main distribution switch with multiple edge switches. Then you have to ensure those VLANs exists on your distribution switch and your edge switch. So let's say you have 100 customers, and you enable them to create networks. For sake of estimation, let's say each customer creates 2 networks, then you need to ensure 200 VLANs exists on your switch, otherwise things will not work such as DHCP, VM to VM communication on different nodes etc.
Stay away from VLANs if you can, go with GRE, it's simpler to implement and manage.