After creating df3 and grouping it, you probably ran summarise multiple times in a row on the output of the previous summarise. summarise drops the last grouping column in the output data frame, so the summary was performed with one fewer grouping columns each time through. In other words, after creating and grouping df3, you probably ran the following code three times:
df3 = summarize(df3,Value=sum(Value))
Each time, df3 was reassigned to the new result. The code below shows what happened by saving the result of each successive summarise with a new name each time. Note how summarise provides a message each time informing us that it dropped a last grouping column. Also note that after running summarise three times, we get the output that surprised you.
# Run summarise three times --------------------------------------------
# FIRST summarise: After running summarise, df3 is now grouped only by Date
df3 = summarize(df3,Value=sum(Value))
#> `summarise()` regrouping output by 'Date' (override with `.groups` argument)
df3
#> # A tibble: 8 x 3
#> # Groups: Date [4]
#> Date Index Value
#> <date> <chr> <dbl>
#> 1 2005-01-01 01 1
#> 2 2005-01-01 02 0
#> 3 2005-01-02 01 0
#> 4 2005-01-02 02 0
#> 5 2005-01-03 01 0
#> 6 2005-01-03 02 0
#> 7 2005-01-04 01 3
#> 8 2005-01-04 02 2
# SECOND summarise: After running summarise, df4 is now not grouped at all
df4 = summarize(df3,Value=sum(Value))
#> `summarise()` ungrouping output (override with `.groups` argument)
df4
#> # A tibble: 4 x 2
#> Date Value
#> <date> <dbl>
#> 1 2005-01-01 1
#> 2 2005-01-02 0
#> 3 2005-01-03 0
#> 4 2005-01-04 5
# THIRD summarise
df5 = summarize(df4,Value=sum(Value))
df5
#> # A tibble: 1 x 1
#> Value
#> <dbl>
#> 1 6