Here's one solution. The green, yellow, and red lines in the first picture above represent costs for travel to the firestations, stored in a column named cat. The green have cat = 1, yellow cat = 2, red cat = 3. So we know from this layer (output of v.net.iso) which street segments are within which costs.
However, we also need to associate these segments with the given fire station so we can group them. To do this I first use v.net.alloc, which allocates the segments to their closest firestation, as shown.
These segments also have a cat field, but it is the cat of the fire station.
Now I have to associate the isoline segments with the alloc segments. To do this I first use the QGIS selection tool to select the isoline segments with cat = 1 (the closest ones to a fire station). Then I use the Spatial Query tool to select those alloc segments that equal the isoline segments, as shown.
Now I have segments that are within the cost AND have the cat of their closest fire station, as shown.
Now I do a convex hull on these segments, grouping by the cat, as shown.
(I named the cat field in the alloc layer cat_fire to distinguish it from the cat in the isoline layer.)
The result is a polygon that covers the segments, as shown.
One problem I noticed is that the convex hull doesn't quite cover all of the isolines, as shown.
I think this is because of the way that I selected the alloc segments. There might be a better way to do this. However, I got most of what I want here.