Yes, I am pretty sure A as main is not the same as the one in import A which ends up in sys.modules.  So A exists twice, once as main, once as a module.  Added a third module, C and you see that the B to C semantics meet your expectation - B and C share a common A. 
A.py
import sys
print len(sys.modules), "len(sys.modules):A top"
import B, C
print len(sys.modules), "len(sys.modules):A after import B, C"
values = []
if __name__=="__main__":
    values.append('something')
    print "A:", values, 'id:',id(values)
    B.printValues()
    C.printValues()
B.py
import sys
print len(sys.modules), "len(sys.modules):B top"
import A
print len(sys.modules), "len(sys.modules):C after A import"
def printValues():
    print "B:", A.values, "id:", id(A.values)
C.py
import sys
print len(sys.modules), "len(sys.modules):C top"
import A
print len(sys.modules), "len(sys.modules):C after A import"
def printValues():
    print "C:", A.values, "id:", id(A.values)    
and this all outputs:
 42 len(sys.modules):A top
 43 len(sys.modules):B top
 44 len(sys.modules):A top
 45 len(sys.modules):C top
 45 len(sys.modules):C after A import
 45 len(sys.modules):A after import B, C
 45 len(sys.modules):C after A import
 45 len(sys.modules):A after import B, C
 A: ['something'] id: 4493313232
 B: [] id: 4493269616
 C: [] id: 4493269616