doesn't even have built-in onfocus functionality
I see that as a CSS styling issue.
Contact Form 7 plugin uses only very minimal CSS styling to allow CF7 forms to blend in with most websites. The appearance of CF7 forms depends primarily on the CSS styles set by the current WordPress theme.
It's an approach that in makes sense IMHO given the vast range of WordPress themes that CF7 is used with every day.
why can't I give a specific field an id/class?
Users can add a specific id/class to any CF7 field quickly and easily in the Tag Generator.
If you want to add a specific id/class in more general way you could do that programatically via one of the many hooks available in CF7.