The very definition of a list comprehension is to produce one list object. Your 2 list objects are of different lengths even; you'd have to use side-effects to achieve what you want.
Don't use list comprehensions here. Just use an ordinary loop:
listOfA, listOfB = [], []
for idx, x in enumerate(s):
target = listOfA if x == 'A' else listOfB
target.append(idx)
This leaves you with just one loop to execute; this will beat any two list comprehensions, at least not until the developers find a way to make list comprehensions build a list twice as fast as a loop with separate list.append()
calls.
I'd pick this any day over a nested list comprehension just to be able to produce two lists on one line. As the Zen of Python states:
Readability counts.