Parses XML to return the bus times at specified bus stop
Imports are okay, you'll find different advice about whether to import
individual functions, so I'll say no more.
You have __name__ ..., good, perhaps just move the contained block
into another function main so that you can easily invoke it from the
REPL.
is_empty is obsolete, at some point you'll just remember that empty
lists are False in a boolean context.  Oh and it's unused as well.
You have a lot of quoting options in Python, so if you need a literal
' in a string, consider delimiting it with " instead of using the
backslash syntax.
You're in Python, so perhaps also use the built-in HTTP library
instead of shelling out to curl.
format_set is more easily written with a list comprehension, e.g.:

def format_set(result_set):
    return [str(el.get_text()) for el in result_set]

Technically get_stop_number accepts more than just numbers and
'quit', so just be aware of that.  I'd inline the stop_numb
variable as well (n.b. why care about saving two characters there?)

...
return int(raw_input('&gt; '))

get_stop_info has a camel-case variable s, that's inconsistent with
the rest and in general not advised in Python.  Again, the loop can be
a list comprehension, but maybe that'll be a bit too dense, your
choice.  In general returning an unstructured list like is will also
prevent the reader from getting a clearer understanding of the code,
but if it's just for display purposes that's fine.

...
return [[int(el.find('RouteNo').get_text()),
         str(el.find('RouteHeading').get_text()),
         format_set(el.find_all('TripStartTime'))]
        for el in soup.find_all('Route')]

I'm a fan of aggressively factoring out common code, you can try and
see how you like e.g. creating smaller functions for
int(el.find(name).get_text()) and so on; that can be helpful later
on as your program(s) grow(s).