You could most definitely just use the tab control, one tab for each category, add a panel to each tab and add the controls needed for each category to the appropriate panel. It will accomplish the same thing as the UserControl idea - it just won't be as scalable and you overall code will probably be a bit beefier.
In fact, I just completed a project proof-of-concept where I did just this. I built the whole page to display a large collection of data that did not include any UserControls. But the form looks like the requirements document states. I am currently awaiting approval on the form layout and once I have that, I will rework the page to use UserControls. The nice thing is that much of the code that is in the demo page can be used in the UserControls so you aren't really wasting time by doing your demo without them.
Now let's talk about your table design question... Personally, I would create a separate table for each of the different categories, include a unique identifier column in each table so you can match the records, and move on. While this results in more tables, it will help in a lot of different ways. One: if you need to refresh one category on your page, you can query the one table directly. This will result in faster returns and less to handle. Second: storage space - If you have one large table with x columns and you only fill y columns in a record, the unused columns will still result in used database space. It might not be much per record, but I think large and when you are talking a few million records, those empty columns can add up. Third: This ties into number two, because you indicate not all categories are used in all cases. So you will only need to populate the needed tables. Some tables might not have a record in them for each of your cases. This will also help to manage the size of your database. These suggestions seem to me to follow proper normalization rules. Some people might argue that it is easier to have one flat table and therefore only one small set of queries to read/write the records, but my answer to them is always scalability. How will you handle a new category?? Add more columns to your table? Instead, you should add a new table.
Of course, all these suggestions are based only on my personal experiences. Take that for what it is worth.
=======================================
People think it must be fun to be a super genius, but they don't realize how hard it is to put up with all the idiots in the world. (Calvin from Calvin And Hobbs)
Robert L. Johnson III
CCNA, CCDA, MCSA, CNA, Net+, A+, CHDP
C#.NET Programmer