What's the reason Android Reverse Tethering require root? From what i know:


Android Tethering, share internet from Android to laptop via USB cable works without root.
Android Reverse Tethering, share internet from laptop Ethernet to Android via USB cable require root. 


So I'm curious what's the technical reason/limitation of Non-root Android Tethering is allow but not vice versa.
ReverseTethering does not require root. If your device runs ICS or newer.

A few months ago, I was wondering the very same thing and started to investigate. Eventually, I started to develop my own solution. The result is an app that works on devices running Android 4.0 or higher on client side, and all major desktop OSs on the host side.

The app is available on Google Play: ReverseTethering NoRoot