If two methods are exact copies of each other then there's no reason to keep both. At the very least for legacy reasons one method could simply call the other one. This will make maintenance much easier.
However, just because two methods appear to take the same inputs and produce the same outputs doesn't necessarily mean they must arrive at the solution the same way. This is a good way to test out new solutions which may work better (i.e. looks cleaner, runs faster, or uses less memory). It's also entirely possible that both methods have their useful inputs. For example:
Consider the naive primality checker. It's quite inefficient, but for small numbers it's extremely fast. However, for larger numbers it's much quicker to check using a probabilistic primality checker. These methods have a larger overhead so it's not really great to use them with small numbers, but for larger numbers this overhead is significantly smaller than time spent performing useful computation. Different data structures are also a good example (e.g. linked lists vs. array lists).