This is simply because Google Duplex's TTS engine is using Tacotron and WaveNet which are not ready for general use yet.
If Google Duplex is a paid product, maybe it just enables running WaveNet on Google Cloud with larger models and higher quality settings .
Speech produced for Assistant doesn't make any money so the server side cost has to be minimised.
One day we'll have all this client side, on specialised ML chips on devices.