Yeah, biological (in)compatiibility is the best and most logical explanation. I imagine Starfleet tries it best to integrate compatible species and overcome the incompatibilities with other species through technical and medical means (that's actually a large theme of the USS Titan novel series) but in the end you can only do so much before simple practicality kicks in.
Though when it comes to there being some Vulcan only ships, I could also see that as a historical perk Vulcans got thanks to being a founding species. After all, no organization as large and complex as Starfleet (and the Federation) can be completely
consistent in regards to it's ideals without any special cases and compromises. Or maybe it's just Starfleet policy to have a couple of single-species ships for each of it's species in addition to the multi-species ships, just for the diversity of crew organizing approaches. Or it's a remnant from the earlier, presumably less integrated (for political, not biological reasons) days of previous centuries. Most likely it's ALL of the above reasons.