Hi, Tariq -
A couple of suggestions :
1) Do you have the returnDirections property on AGSRouteTaskParameters set to YES? If so, you can try setting the returnRouteGraphics property to NO. This is because, you're essentially getting the entire route geometry twice if both these properties are enabled. The only difference is that the entire route is broken into smaller units as part of the directions.
2) You can try generalizing the route geometry through the outputGeometryPrecision property on AGSRouteTaskParameters. By default, it is set to generalize using a distance of 5 meters, but you can increase this depending on how accurate you want the route geometry to be. The less accurate it is, the lesser vertices it will have and thus the size of the geometry will decrease. You may need to experiment to see what value works best for you without sacrificing too much accuracy and still keeping the size reasonable.