It depends on what your application is doing. In general I don't think it's useful to have a list of every instance created of a particular class. It plays havoc on memory management systems because the garbage collector has no idea when a particular instance is ready to be destroyed.
Wherever people are being used should keep track of what people instances they are interacting with (similar to case 2).
What problem are you trying to solve that would involve keeping a global list of people instances? There may be a better way to structure your program to avoid it.