If a client truly needs what you're describing, it can be done.
I implement pessimistic by default, with the client's blessing. I have yet to encounter a situation where something else was needed. Again, many clients truly don't want anything else.
But if they need change tracking, it can be done. As I said before, I default every column parameter to null, so it's a matter of determining which columns were changed by the user and only passing those as parameters.