Multiple default routes on MacOS

Solution 1:

macOS chooses which of those default routes to use based on the service order. You can set the order by opening System Preferences, select Network and then click the gear icon below the interface list to select Set Service Order. Drag and drop the interfaces to prioritize.

As you're working with the Terminal, this information is also available there by running:

networksetup -listnetworkserviceorder

This will show you the prioritized list. You can change the order by running:

networksetup -ordernetworkservices <service1> <service2> <...>

Note that this determines the route chosen only for connections initiated from your computer. If a connection is initiated by another device, the interface that it is initiated from will be used for that connection.

I.e. for example you have both an Ethernet and WiFi connection to another computer. You could set your service order so that you prefer connections to be made over WiFi. But if the other computer initiates the connection over Ethernet, then packets you send later on that connection will be sent over Ethernet.