Symbol timing synchronization usually relies on a digital PLL procedure, an iterative process that relies on detecting a timing error signal that is used to control an interpolation filter that in its turn tracks this error until lock is achieved. Suppose this feedback algorithm is totally ignored and brute force oversampling is used so that the maximum amplitude sample at the output of the matched filter would be the one to process further. so no tracking, no lock. Ignoring any small quantization error, are there any other issues using this method?
The primary issue with this approach is that it will appear to work fine in your design if you do not consider noise, but in actual application will fail under low or even moderate SNR conditions unless you start doing what an appropriate tracking loop response will do by design and that is average out the sample to sample noise to provide your best estimate of the correct timing location; that which you would not be able to properly estimate on any one given sample. So yes as long as you do the proper filtering/averaging and timing estimation and correct your timing estimate based on current and past updates you will be able to do your timing recovery- but this is what the timing recovery loop is doing and very efficiently. For any such design that you pursue for timing (and carrier recovery, and data demodulation) be sure to test and benchmark your approach using corner case SNR conditions AND worst case symbol clock offset between the transmitter clock, signal as received, and receiver clock!
To add to this since not detailed in my other links is the Gardner Timing Error Detector (TED) implementation suitable for QPSK and QAM implementations, where the symbol $y_n$ shown is the complex I,Q output. I have not implemented this for OQPSK specifically, but do not see why simply offsetting the I and Q samples half a symbol would not work. The TED produces an average level that is proportional to timing error and will have significant pattern noise on any one given output so is assumed to be averaged as part of the overall loop design:
Note the the Gardner TED has a relatively high capture range for carrier offsets (see Location of Matched Filter for more details on that), so assuming the estimation of the carrier is within this range, the timing recovery can be done ahead of carrier recovery as shown in this QAM receiver implementation (two samples per symbol for timing recovery, which once acquired is decimated to one sample per symbol for carrier recovery. Also depending on the waveform pulse shaping used and timing error determination the inputs to the timing recovery may be better before or after matched filtering (hence the dashed lines in the block diagram showing that either may be used).
Below is a graphic that compares an approach of changing the frequency of the sampling clock to the ADC in the receiver vs interpolation and resampling. The latter is more prevalent in modern software radio solutions.
(It is unfortunate that the two implementations are in reverse direction flow and I apologize for that; it is the figures I had readily available)
The following graphic demonstrates the concept of interpolation and resampling :
A polyphase filter approach as publicized by fred harris would do this interpolation and retiming efficiently, so that you never actually need to interpolate to a higher rate than 2 samples per symbol. Note that you also only need three filter implementations in the poly-phase filter bank: a present and the two adjacent. After changing from present to adjacent, the filter coefficients can be updated from a ROM table. (The reason for keeping the three is so that all filters needed are properly loaded with the waveform history prior to switching two its output).
For further details on polyphase retiming and implementation of polyphase filters see these links: