You're correct about Minehut using BungeeCord, it's really the only way to achieve what they have done anyways. If you would like more detail on how they split up the servers on a network it's because each server is on it's own port connected to the BungeeCord port which is normally 25565. Let's say you create a server (I assume they have a BungeeCord plugin that manages this), it would automatically create a new instance for you and assign a port to that server so essentially it uses the same IP as Minehut but on a different port like 25580 and so forth. Then Minehut creates a sub domain (example.minehut.gg) depending on your servers name which simply routes it to your server using the IP & port.