Why aren't all Android games using Google Play's ability to serve their expansion files? Why some are handling it themselves inside their apps?
Since I cannot comment, but still would like to supplement Hamza Hasan's answer, it is correct that the Play Store allows for only 100MB now (which would then require an OBB extension file), but a good reason why you would handle these yourself instead of storing it on Google is the total control over it: even though it's very simplified, uploading any new version to the Play Store can take some time, so you could host your expansion in your own server and drive the updates yourself, with almost no delay for patches. It can be really useful for online games and such, but it comes with a caveat: your server won't always be better than Google's, in terms of speed, so unless you're rocking a premium AWS, there's a chance you'll get overloaded, and that unfortunately happens a lot with amateurish multiplayer games on Android when they are fetching big updates.
APK expansion file is due to oversize of apk build. When ever you get 50+ mb size of apk, you have to split it into main APK and OBB expansion file. Now as far as your last part of question is concern, other games have their own servers to minimize and optimize their game, with respect to size and performance. For example a game has 50 levels. But in initial downloaded build you will have starting 10 levels. When you get at 11th level, next 20 levels will be downloaded in minimum time, otherwise all 50 levels will take time to download, that will make bad impact in user experience. Hope you understand.
APK files have a maximum file size, based on the Android version your APK supports:
100MB - APKs that target Android 2.3 and higher (API level 9 or higher)
50MB - APKs that target Android 2.2 and lower (API level 8 or lower)