A tainted kernel only has very slight differences in behaviour, and only to protect itself, never to disable features just because it’s tainted:
* the check for hung uninterruptible tasks aborts early if the kernel is tainted with `TAINT_DIE` ( _i.e._ an Oops or `BUG()` has occurred);
* trace events and enums aren’t set up for tainted kernel modules where the taint could result in incorrect trace data; if a module is tainted for reasons _other_ than being out-of-tree, staging, or unsigned, its state could be invalid and tracing it might cause more problems (think for example of modules which are force-inserted in spite of an ABI mismatch).