Being available is not the same as every thread can make use of all of them.
And that's the case with all and any cores. (that's also why HTT gives a boost)
If officially senseMI is responsible for 1/4 of the IPC increase you can be pretty sure that most threads won't be able to use more then 3/4 of the core.
(IF it turns out that senseMI is responsible for partitioning that is)
Well, not every instruction stream will make full use of all of a core's functional units - so yes. But, it doesn't follow, with dynamic partitioning, that ST will be confined the way you specify. There likely exists an optimal instruction/data stream that will utilize most of the core (with no mispredict penalties or stalls) - some hand coded loop, for example, that gets all data from registers. So, an unlikely case in real world programming. Nonetheless, the point of this sort of dynamic partitioning (
depending on the degree it is dynamic) is that resources can be allocated pretty much on the fly. Now, if all the functional block in RED on the diagram Abwx shared are competitively assigned in the same way as Intel's HT - then, SMT behaviour in Ryzen will be closer to Intel's Core line of processors (HT). If that is the case, then it opens up additional optimizations that can be made in follow-up Zen uArch descendants.
SMT can be made much more beneficial to everyday users if the Core can be be more extensively dynamic and faster reacting using pre-execution instruction stream analysis withing the CPU. This will help minimize some of the problems of getting good performance out of multithreaded programs. Debugging will still be an issue (though, better design for multithreaded apps greatly reduces downstream problems**). So one of the things I see in Zen, is the possibility of making multithreaded apps more available on PCs as they are on game consoles! (if AMD can really get Zen market share up).
** seems to be quite an education gap in multithreaded software design. I had the advantage of first working in highly threaded multiprocessor embedded system applications - after that, parallel programming seemed to come quite naturally - though I continued to update my skills for different languages/OSes.