We have quite a few fields in the personal information section of the profile (using custom fields) including things like race, primary language, education as well, so it seems to work well within that section. The fields such as race/ethnicity and gender we have labeled as "not visible in profile" so it is only visible to the member and to us. It is a required category, because we wanted to people to select "prefer not to answer" versus skipping over it accidentally.