I have came across an ODI project and there seems to be a lot of user defined KMs and I don't understand why they were modified? Is there any particular scenario where existing KM doesn't work?
There are a lot of reasons for writing your own KM or modify the existing ones, for example:
The benefits of writing KM's is that the limit is your imagination (or almost). You can do plenty of stuff. The standard KM's are very good but there are some moments when you reach the limit with them and from there you should create your own.
Hope that this helps you.