Just use optimized triangle lists.
In certain circumstances, strips can be useful (particularly with primitive restarting). However, when and where these circumstances arise cannot usually be determined a priori. You generally need to have profiling data in hand to make it worthwhile.
As such, it is best to just pick indexed lists. Maybe later, when you’re trying to squeeze out all the performance you can, you can do some profiling to find out if a stripped mesh could improve performance. Especially since any performance improvement will be modest.
Basically just stick with the answer that is always not-wrong: optimized lists. They may not be perfect in every case, but they’re 90% of the way there. When the time comes to start looking for that 10% (and remember: this performance only matters if your rendering is bound by vertex T&L or vertex reading bandwidth, which it almost never is), you can investigate alternatives.