If an automated telephone interface asks me to enter the last four digits of my social security number, why does it also ask me to press # at the end. Shouldn't it be able to recognize when I've entered 4 digits?
It's pretty simple:
They need you to identify the end of a string of numbers when they can't know for sure how many numbers to expect.
Take credit card numbers, not all are 16 digits long so if you enter a card number the system needs to recognise that the end of the number has been encountered. This is much simpler and quicker than actually searching and validating the card number against all possible valid sets after each number is entered.
From a user perspective it also gives you a quick out if you make a mistake, though I'm not sure whether it has been designed this way
Phone numbers are the same, they vary in length, hence an identifier being required.
You'll notice that for some strings of numbers, like an individual system set fixed count PIN you won't need to press hash (pound) as the system knows how big the number is
This comes from my experience with a code-lock keypad rather than a telephone entry system, but the principle is the same: it lets you correct errors. Say you want to enter the code "1234", but you typo that as "1236". By requiring you to use "#" to indicate end-of-input, you can type "12361234#", and it will be seen as "1234".
(There's also a minor security benefit, in that you can't brute-force a PIN by simply entering a De Bruijn sequence -- you need to try each number individually.)