The system maintains only one instance of a static class and so if the inner class is static, there will be only one instance of it per activity. If the inner class isn't static then you can have multiple instances on the inner class accessing the activity and each would have the ability to modify the activity state independently.
This can cause numerous challenges if it is that you actually create multiple instances of an inner class. Think of it this way, you have an inner class that updates a counter variable in the activity and then loops through a list based on the value of this counter. If the inner class is static, then there is just one instance of it doing this. If it is not static however, then there could be, say, three instances doing this. Remember all three are accessing the same activity and the same counter, so if they run at different times (very likely) they would update the variable at different times and then loop. So when the first instance updates the variable and begins its loop checking the value as it goes, the second instance then changes the variable and now affects the loop in the first. It then starts its loop and then the third instance updates the counter again affecting both other instances. So now none of the previously running instances on the inner class will produce the correct result.
This is very simplistic example and things can get much, much worse.