Marks gave some good tips. If your current project is part of a much larger, complex project, rolling your own custom class might be advantageous because, as Mark so elegantly points out, other developers will be able view/modify it better if its centralized, other than hunting it down in files.
Using a custom object through instantiating a class of your own design also provides better code reusability throughout your app. But then again, if this is a singe-shot use, this might be overkill.
In general, rolling custom classes into seperate files **may not** result in better performance than coding directly (that you're using SPROCs is the best performance gain), but it's better for larger apps where the code is accessed in multiple places.
If you're doing true n-tier development, it'll be better for maintenance somewhere down the road if you seperate your functional/custom code into a seperate module. It makes for better maintainability, needing to change code that's referenced in multiple places throughout your Web app in one single locale.
Keep in mind that the choice to use a custom class or not (or use code behind) may also be behavioral rather than performance-based. Some people like code behind when working alone, some people don't. It's obviously better for larger organizations because UI designers can work on the controls and HTML and the programmers can mess with the script code and both are at peace.
EXAMPLE:
=========
I personally use code behind when working on WebForms that are very complex or have a LOT of code, such as pages using DataGrids. Things like paging, sorting, in-line editing and adding records makes for a lot of code, so in this case I seperate things.
I also roll my own custom class when working on a project wherein a method is called by two or more WebForms, attaining the aforementioned benefit of centralization.
Sorry...sorta long-winded, but hope this helps you out.
Jas