Stream = unbounded sequence of (key, value, ts) events. Table = current value per key (folded from stream). Materialized table view is the result of applying every event in order.
Kafka Streams KTable, Flink SQL CREATE TABLE — same idea. The duality lets you switch between views as the problem demands.