I am not very well versed with ONIOM calculations, so I cannot really comment, whether my following examples are actually sensible, I just picked your example with different methods.
I think the biggest problem here is the lack of a real description of ONIOM for Gaussian, especially when it comes to defining general basis sets. Long story short, and if you don't like my rambling, check out g16/tests/com/test0699.com. In brief, if you use oniom(x/genecp:y/genecp), you'll need three complete sections of general basis sets: low-level real system, high-level model system, low-level model system.
As you have noticed something like oniom(CCSD(T)/cc-pVTZ:M06/def2SVP) will run perfectly fine. There is nothing special about that, Gaussian uses all of its default implementations and files.
From what I understood, a two-layer calculation will first perform a low-level calculation on the real system, then the high-level calculation on the model system, then the low-level calculation on the model system.
Input 1
#P TEST oniom(CCSD(T)/cc-pVTZ:M06/def2SVP) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L !~eof
The issue comes when specifying the general basis. If you want to specify a basis for the high level, it is still somewhat normal, so the above can be rewritten as following.
Input 2
#P TEST oniom(CCSD(T)/gen:M06/def2SVP) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L He 0 cc-pVTZ **** !~eof
So far so good, but what do you need to do to change the level for the lower layer? That is not quite as simple. Let's use the example and just switch it around.
Input 3 (broken)
#P TEST oniom(CCSD(T)/cc-pVTZ:M06/gen) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L He Ti 0 def2SVP **** !~eof
It will run the low-level calculation on the system (RMO6/gen), then run the high-level calculation (CCSD(T)/cc-pVTZ), then abort with the error in 301:
General basis read from cards: (5D, 7F) End of file reading basis center.
It needs a general basis for the low-level calculation of the model system, if you add that, everything will work. Therefore, Input 1 can be rewritten as:
Input 3 (fixed)
#P TEST oniom(CCSD(T)/cc-pVTZ:M06/gen) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L He Ti 0 def2SVP **** He 0 def2SVP **** !~eof
From here on in it may be quite obvious what to do to run it with two different general basis sets. Simply specify them in the order as you would specify the charge: low-level real system (everything), high-level model system (layer H), low-level model system (layer H).
Input 4
#P TEST oniom(CCSD(T)/gen:M06/gen) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L He Ti 0 def2SVP **** He 0 cc-pVTZ **** He 0 def2SVP **** !~eof
Now, let's finish this with the ecp settings. Here it is especially important to keep track of the blank lines. Even though helium will not have an ECP, Gaussian will want to read that section. Since it is terminated by a blank line, at least that must be there. Otherwise you will get the following error in L301:
EOF while reading ECP pointer card.
The following input should reproduce your example.
#P TEST oniom(HF/genecp:BLYP/genecp) Title Card Required 0 1 He 0 0.0 0.0 0.0 H Ti 0 0.0 0.0 4.0 L He 0 STO-3G **** Ti 0 LANL2DZ **** Ti 0 LANL2DZ He 0 def2SVP **** He 0 STO-3G **** !~eof
So I would say the bug is not in the code itself, but in the documentation.