Seq2SeqB is not a encoder-decoder architecture, you only have one LSTM layer (essentially just the decoder). Since you use the output and not just the last hidden state, this setup is more appropriate for the task of Sequence Labelling (e.g., Part-of-Speech Tagging or Named Entity Recognition in NLP). Seq2Seq, in principle, encode a complete sequence and generate a new sequence base on that encoding.
To make the problems with using Seq2SeqB more tangible, let me show why couldn’t (meaningfully) use it for, say, machine translation:


In case for Seq2SeqB the output sequence is always of the same length as the input sequence. In machine translation, this is arbitrary unlikely.


Case of Seq2SeqB, output[0] only depends on input[0], output[1] depends only on input[0:1], ouput[2] only depends on input[0:2], and so on – a BiLSTM is a bit more complex. However, a true Seq2Seq model first encodes the whole sentence since even the first word might depend on words or phrases anywhere in the input sentence.


In short, both your models are “many-to-many” models (in contrast to using an LSTM for classification which would be a “many-to-one” model). However, Seq2SeqB is the common approach for sequence lebelling, while Seq2Seq is a true encoder-decoder model for sequence generation.