Final exams are too limited:
1) Every student is different. A test will work for some, but not work for others. Just based on the student's affinity- some are better at reading, others at listening. Everyone takes in information differently.
2) A bad day for a smart student can make him/her preform poorly. And a good day for a dumb student can make him/her preform better than they would otherwise. The test cannot be an accurate measure of knowledge.
3) The test may not be the best format for the students to relay their knowledge. Some students struggle with multiple choice or with essay formats. Even if the test has both, the student will suck at one part, and do better at the other.
4) Language barriers. A student may know math or any subject well, but because the test is in English, they wont do as well. This isn't as big of an issue, but in places where there are larger immigrant populations or multicultural communities, it may be a bigger issue.
5) The stress. Final exams have a lot of importance, and it creates an atmosphere of stress and negativity.
For a final exam to be good, it would have to be tailored for each individual student, which is very difficult to do and would cost way too much money. Unfortunately, I do not know of a better solution to gauge a student's overall knowledge of a course.